(root)/
gcc-13.2.0/
gcc/
testsuite/
gdc.test/
compilable/
test20530.d
// EXTRA_FILES: imports/test20530a.d imports/plainpackage/plainmodule.d imports/pkgmodule/package.d imports/pkgmodule/plainmodule.d
module mod;
static assert(is(mod == module));
static assert(is(mixin("mod") == module));
static assert(!is(mod == package));
static assert(!is(mixin("mod") == package));

import imports.test20530a;
static assert(is(imports == package));
static assert(is(mixin("imports") == package));
static assert(!is(imports == module));
static assert(!is(mixin("imports") == module));

import imports.plainpackage.plainmodule;
import imports.pkgmodule.plainmodule;

struct MyStruct;

alias a = mixin("imports.plainpackage");
alias b = mixin("imports.pkgmodule.plainmodule");

static assert(is(mixin("imports.plainpackage") == package));
static assert(is(mixin("a") == package));
static assert(!is(mixin("imports.plainpackage.plainmodule") == package));
static assert(!is(mixin("b") == package));
static assert(is(mixin("imports.pkgmodule") == package));
mixin("static assert(is(imports.pkgmodule == package));");

static assert(!is(mixin("MyStruct") == package));

static assert(!is(mixin("imports.plainpackage") == module));
static assert(!is(mixin("a") == module));
static assert(is(mixin("imports.plainpackage.plainmodule") == module));
static assert(is(mixin("b") == module));
static assert(is(mixin("imports.pkgmodule") == module));
mixin("static assert(is(imports.pkgmodule == module));");

static assert(!is(mixin("MyStruct") == module));

static assert(!is(mixin("imports.nonexistent") == package));
static assert(!is(mixin("imports.nonexistent") == module));

// this won't work due to mixin argument .stringof expansion,
// it will expand to mixin(package imports.pkgmodule). Issue 20519.
//static assert(is(mixin(imports.pkgmodule) == package));
//static assert(is(mixin(imports.pkgmodule) == module));