From cca9dd32abaae97c528264349d4279c697bcccd3 Mon Sep 17 00:00:00 2001 From: k-hara Date: Tue, 24 Dec 2013 10:03:27 +0900 Subject: [PATCH] [Refactoring] Add Package::isPackageMod() --- src/access.c | 5 ++--- src/import.c | 6 +++--- src/module.c | 9 +++++++++ src/module.h | 2 ++ 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/access.c b/src/access.c index 2014f3e1b096..f783a08d2374 100644 --- a/src/access.c +++ b/src/access.c @@ -281,9 +281,8 @@ bool hasPackageAccess(Scope *sc, Dsymbol *s) Dsymbol *s2 = dst->lookup(m->ident); assert(s2); Package *p = s2->isPackage(); - if (p && p->isPkgMod == PKGmodule) + if (p && p->isPackageMod()) { - assert(p->mod == m); pkg = p; break; } @@ -305,7 +304,7 @@ bool hasPackageAccess(Scope *sc, Dsymbol *s) #endif return true; } - if (pkg->isPkgMod == PKGmodule && pkg->mod == sc->module) + if (pkg->isPackageMod() == sc->module) { #if LOG printf("\ts is in same package.d module as sc\n"); diff --git a/src/import.c b/src/import.c index 32e0b516cfff..f5db0517f191 100644 --- a/src/import.c +++ b/src/import.c @@ -141,11 +141,11 @@ void Import::load(Scope *sc) else assert(p->isPkgMod == PKGmodule); } - else if (p->isPkgMod == PKGmodule) + else { - mod = p->mod; + mod = p->isPackageMod(); } - if (p->isPkgMod != PKGmodule) + if (!mod) { ::error(loc, "can only import from a module, not from package %s.%s", p->toPrettyChars(), id->toChars()); diff --git a/src/module.c b/src/module.c index 24e1c90cedbe..332e2855e3b5 100644 --- a/src/module.c +++ b/src/module.c @@ -1077,6 +1077,15 @@ const char *Package::kind() return "package"; } +Module *Package::isPackageMod() +{ + if (isPkgMod == PKGmodule) + { + return mod; + } + return NULL; +} + /**************************************************** * Input: * packages[] the pkg1.pkg2 of pkg1.pkg2.mod diff --git a/src/module.h b/src/module.h index a5a0124c3cb9..e04513e24781 100644 --- a/src/module.h +++ b/src/module.h @@ -55,6 +55,8 @@ class Package : public ScopeDsymbol virtual void semantic(Scope *) { } Dsymbol *search(Loc loc, Identifier *ident, int flags = IgnoreNone); void accept(Visitor *v) { v->visit(this); } + + Module *isPackageMod(); }; class Module : public Package