public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc(refs/users/guojiufu/heads/personal-branch)] d: Merge upstream dmd 73d8e2fec.
@ 2020-06-10 3:44 Jiu Fu Guo
0 siblings, 0 replies; only message in thread
From: Jiu Fu Guo @ 2020-06-10 3:44 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:0a2ee4099d9c964dadd097f829a9624164d98743
commit 0a2ee4099d9c964dadd097f829a9624164d98743
Author: Iain Buclaw <ibuclaw@gdcproject.org>
Date: Sun Jun 7 21:58:49 2020 +0200
d: Merge upstream dmd 73d8e2fec.
Renames the enum PROTKIND to Prot::Kind, updates all uses of the
original enum accordingly.
gcc/d/ChangeLog:
* dmd/MERGE: Merge upstream dmd 73d8e2fec.
* decl.cc (get_symbol_decl): Use new Prot::Kind enum.
* modules.cc (get_internal_fn): Likewise.
Diff:
---
gcc/d/decl.cc | 4 +--
gcc/d/dmd/MERGE | 2 +-
gcc/d/dmd/access.c | 64 +++++++++++++++++++++++------------------------
gcc/d/dmd/arrayop.c | 2 +-
gcc/d/dmd/attrib.c | 8 +++---
gcc/d/dmd/dclass.c | 4 +--
gcc/d/dmd/declaration.c | 8 +++---
gcc/d/dmd/denum.c | 4 +--
gcc/d/dmd/dimport.c | 2 +-
gcc/d/dmd/dmodule.c | 2 +-
gcc/d/dmd/doc.c | 16 ++++++------
gcc/d/dmd/dscope.c | 6 ++---
gcc/d/dmd/dstruct.c | 8 +++---
gcc/d/dmd/dsymbol.c | 24 +++++++++---------
gcc/d/dmd/dsymbol.h | 29 +++++++++++----------
gcc/d/dmd/dtemplate.c | 6 ++---
gcc/d/dmd/expressionsem.c | 2 +-
gcc/d/dmd/func.c | 24 +++++++++---------
gcc/d/dmd/hdrgen.c | 18 ++++++-------
gcc/d/dmd/json.c | 4 +--
gcc/d/dmd/mtype.c | 2 +-
gcc/d/dmd/nspace.c | 2 +-
gcc/d/dmd/parse.c | 34 ++++++++++++-------------
gcc/d/modules.cc | 2 +-
24 files changed, 138 insertions(+), 139 deletions(-)
diff --git a/gcc/d/decl.cc b/gcc/d/decl.cc
index a2a21428a26..bcee0b21e7d 100644
--- a/gcc/d/decl.cc
+++ b/gcc/d/decl.cc
@@ -1325,9 +1325,9 @@ get_symbol_decl (Declaration *decl)
TREE_THIS_VOLATILE (decl->csym) = 1;
/* Protection attributes are used by the debugger. */
- if (decl->protection.kind == PROTprivate)
+ if (decl->protection.kind == Prot::private_)
TREE_PRIVATE (decl->csym) = 1;
- else if (decl->protection.kind == PROTprotected)
+ else if (decl->protection.kind == Prot::protected_)
TREE_PROTECTED (decl->csym) = 1;
/* Likewise, so could the deprecated attribute. */
diff --git a/gcc/d/dmd/MERGE b/gcc/d/dmd/MERGE
index 96d579b90fc..f71d20cf462 100644
--- a/gcc/d/dmd/MERGE
+++ b/gcc/d/dmd/MERGE
@@ -1,4 +1,4 @@
-108ca1bcde2096a2c6173c567a204d749538dd74
+73d8e2fecb9e73422464b4cbf71f2b2967c9a75d
The first line of this file holds the git revision number of the last
merge done from the dlang/dmd repository.
diff --git a/gcc/d/dmd/access.c b/gcc/d/dmd/access.c
index 89ea487b106..f79eaeb8690 100644
--- a/gcc/d/dmd/access.c
+++ b/gcc/d/dmd/access.c
@@ -39,7 +39,7 @@ static Dsymbol *mostVisibleOverload(Dsymbol *s);
*/
Prot getAccess(AggregateDeclaration *ad, Dsymbol *smember)
{
- Prot access_ret = Prot(PROTnone);
+ Prot access_ret = Prot(Prot::none);
assert(ad->isStructDeclaration() || ad->isClassDeclaration());
if (smember->toParent() == ad)
@@ -59,20 +59,20 @@ Prot getAccess(AggregateDeclaration *ad, Dsymbol *smember)
Prot access = getAccess(b->sym, smember);
switch (access.kind)
{
- case PROTnone:
+ case Prot::none:
break;
- case PROTprivate:
- access_ret = Prot(PROTnone); // private members of base class not accessible
+ case Prot::private_:
+ access_ret = Prot(Prot::none); // private members of base class not accessible
break;
- case PROTpackage:
- case PROTprotected:
- case PROTpublic:
- case PROTexport:
+ case Prot::package_:
+ case Prot::protected_:
+ case Prot::public_:
+ case Prot::export_:
// If access is to be tightened
- if (PROTpublic < access.kind)
- access = Prot(PROTpublic);
+ if (Prot::public_ < access.kind)
+ access = Prot(Prot::public_);
// Pick path with loosest access
if (access_ret.isMoreRestrictiveThan(access))
@@ -114,7 +114,7 @@ static bool isAccessible(
{
BaseClass *b = (*cdthis->baseclasses)[i];
Prot access = getAccess(b->sym, smember);
- if (access.kind >= PROTprotected ||
+ if (access.kind >= Prot::protected_ ||
isAccessible(smember, sfunc, b->sym, cdscope))
{
return true;
@@ -164,17 +164,17 @@ bool checkAccess(AggregateDeclaration *ad, Loc loc, Scope *sc, Dsymbol *smember)
if (smemberparent == ad)
{
access = smember->prot();
- result = access.kind >= PROTpublic ||
+ result = access.kind >= Prot::public_ ||
hasPrivateAccess(ad, f) ||
isFriendOf(ad, cdscope) ||
- (access.kind == PROTpackage && hasPackageAccess(sc, smember)) ||
+ (access.kind == Prot::package_ && hasPackageAccess(sc, smember)) ||
ad->getAccessModule() == sc->_module;
}
- else if ((access = getAccess(ad, smember)).kind >= PROTpublic)
+ else if ((access = getAccess(ad, smember)).kind >= Prot::public_)
{
result = true;
}
- else if (access.kind == PROTpackage && hasPackageAccess(sc, ad))
+ else if (access.kind == Prot::package_ && hasPackageAccess(sc, ad))
{
result = true;
}
@@ -343,8 +343,8 @@ bool checkAccess(Loc loc, Scope *sc, Expression *e, Declaration *d)
}
if (!e)
{
- if ((d->prot().kind == PROTprivate && d->getAccessModule() != sc->_module) ||
- (d->prot().kind == PROTpackage && !hasPackageAccess(sc, d)))
+ if ((d->prot().kind == Prot::private_ && d->getAccessModule() != sc->_module) ||
+ (d->prot().kind == Prot::package_ && !hasPackageAccess(sc, d)))
{
error(loc, "%s %s is not accessible from module %s",
d->kind(), d->toPrettyChars(), sc->_module->toChars());
@@ -392,7 +392,7 @@ bool checkAccess(Loc loc, Scope *sc, Package *p)
return false;
for (; sc; sc = sc->enclosing)
{
- if (sc->scopesym && sc->scopesym->isPackageAccessible(p, Prot(PROTprivate)))
+ if (sc->scopesym && sc->scopesym->isPackageAccessible(p, Prot(Prot::private_)))
return false;
}
const char *name = p->toPrettyChars();
@@ -418,18 +418,18 @@ bool symbolIsVisible(Module *mod, Dsymbol *s)
switch (s->prot().kind)
{
- case PROTundefined:
+ case Prot::undefined:
return true;
- case PROTnone:
+ case Prot::none:
return false; // no access
- case PROTprivate:
+ case Prot::private_:
return s->getAccessModule() == mod;
- case PROTpackage:
+ case Prot::package_:
return s->getAccessModule() == mod || hasPackageAccess(mod, s);
- case PROTprotected:
+ case Prot::protected_:
return s->getAccessModule() == mod;
- case PROTpublic:
- case PROTexport:
+ case Prot::public_:
+ case Prot::export_:
return true;
default:
assert(0);
@@ -459,18 +459,18 @@ bool symbolIsVisible(Scope *sc, Dsymbol *s)
switch (s->prot().kind)
{
- case PROTundefined:
+ case Prot::undefined:
return true;
- case PROTnone:
+ case Prot::none:
return false; // no access
- case PROTprivate:
+ case Prot::private_:
return sc->_module == s->getAccessModule();
- case PROTpackage:
+ case Prot::package_:
return sc->_module == s->getAccessModule() || hasPackageAccess(sc->_module, s);
- case PROTprotected:
+ case Prot::protected_:
return hasProtectedAccess(sc, s);
- case PROTpublic:
- case PROTexport:
+ case Prot::public_:
+ case Prot::export_:
return true;
default:
assert(0);
diff --git a/gcc/d/dmd/arrayop.c b/gcc/d/dmd/arrayop.c
index 3beba9a206b..72abd5e9b30 100644
--- a/gcc/d/dmd/arrayop.c
+++ b/gcc/d/dmd/arrayop.c
@@ -70,7 +70,7 @@ FuncDeclaration *buildArrayOp(Identifier *ident, BinExp *exp, Scope *sc)
//printf("fd: %s %s\n", ident->toChars(), ftype->toChars());
FuncDeclaration *fd = new FuncDeclaration(Loc(), Loc(), ident, STCundefined, ftype);
fd->fbody = fbody;
- fd->protection = Prot(PROTpublic);
+ fd->protection = Prot(Prot::public_);
fd->linkage = LINKc;
fd->isArrayOp = 1;
diff --git a/gcc/d/dmd/attrib.c b/gcc/d/dmd/attrib.c
index 81b2da11e56..5445b9e5968 100644
--- a/gcc/d/dmd/attrib.c
+++ b/gcc/d/dmd/attrib.c
@@ -596,7 +596,7 @@ ProtDeclaration::ProtDeclaration(Loc loc, Identifiers* pkg_identifiers, Dsymbols
: AttribDeclaration(decl)
{
this->loc = loc;
- this->protection.kind = PROTpackage;
+ this->protection.kind = Prot::package_;
this->protection.pkg = NULL;
this->pkg_identifiers = pkg_identifiers;
}
@@ -604,7 +604,7 @@ ProtDeclaration::ProtDeclaration(Loc loc, Identifiers* pkg_identifiers, Dsymbols
Dsymbol *ProtDeclaration::syntaxCopy(Dsymbol *s)
{
assert(!s);
- if (protection.kind == PROTpackage)
+ if (protection.kind == Prot::package_)
return new ProtDeclaration(this->loc, pkg_identifiers, Dsymbol::arraySyntaxCopy(decl));
else
return new ProtDeclaration(this->loc, protection, Dsymbol::arraySyntaxCopy(decl));
@@ -629,7 +629,7 @@ void ProtDeclaration::addMember(Scope *sc, ScopeDsymbol *sds)
pkg_identifiers = NULL;
}
- if (protection.kind == PROTpackage && protection.pkg && sc->_module)
+ if (protection.kind == Prot::package_ && protection.pkg && sc->_module)
{
Module *m = sc->_module;
Package* pkg = m->parent ? m->parent->isPackage() : NULL;
@@ -648,7 +648,7 @@ const char *ProtDeclaration::kind() const
const char *ProtDeclaration::toPrettyChars(bool)
{
- assert(protection.kind > PROTundefined);
+ assert(protection.kind > Prot::undefined);
OutBuffer buf;
buf.writeByte('\'');
diff --git a/gcc/d/dmd/dclass.c b/gcc/d/dmd/dclass.c
index 3d6f6227eb3..73e571b4da9 100644
--- a/gcc/d/dmd/dclass.c
+++ b/gcc/d/dmd/dclass.c
@@ -867,7 +867,7 @@ Lancestorsdone:
{
VarDeclaration *vd = fields[i];
if (!vd->isThisDeclaration() &&
- !vd->prot().isMoreRestrictiveThan(Prot(PROTpublic)))
+ !vd->prot().isMoreRestrictiveThan(Prot(Prot::public_)))
{
vd->error("Field members of a synchronized class cannot be %s",
protectionToChars(vd->prot().kind));
@@ -988,7 +988,7 @@ Dsymbol *ClassDeclaration::search(const Loc &loc, Identifier *ident, int flags)
continue;
else if (s == this) // happens if s is nested in this and derives from this
s = NULL;
- else if (!(flags & IgnoreSymbolVisibility) && !(s->prot().kind == PROTprotected) && !symbolIsVisible(this, s))
+ else if (!(flags & IgnoreSymbolVisibility) && !(s->prot().kind == Prot::protected_) && !symbolIsVisible(this, s))
s = NULL;
else
break;
diff --git a/gcc/d/dmd/declaration.c b/gcc/d/dmd/declaration.c
index aa48195794b..08b295070b2 100644
--- a/gcc/d/dmd/declaration.c
+++ b/gcc/d/dmd/declaration.c
@@ -75,7 +75,7 @@ Declaration::Declaration(Identifier *id)
type = NULL;
originalType = NULL;
storage_class = STCundefined;
- protection = Prot(PROTundefined);
+ protection = Prot(Prot::undefined);
linkage = LINKdefault;
inuse = 0;
mangleOverride = NULL;
@@ -1830,12 +1830,12 @@ bool VarDeclaration::needThis()
bool VarDeclaration::isExport() const
{
- return protection.kind == PROTexport;
+ return protection.kind == Prot::export_;
}
bool VarDeclaration::isImportedSymbol() const
{
- if (protection.kind == PROTexport && !_init &&
+ if (protection.kind == Prot::export_ && !_init &&
(storage_class & STCstatic || parent->isModule()))
return true;
return false;
@@ -2218,7 +2218,7 @@ TypeInfoDeclaration::TypeInfoDeclaration(Type *tinfo)
{
this->tinfo = tinfo;
storage_class = STCstatic | STCgshared;
- protection = Prot(PROTpublic);
+ protection = Prot(Prot::public_);
linkage = LINKc;
alignment = target.ptrsize;
}
diff --git a/gcc/d/dmd/denum.c b/gcc/d/dmd/denum.c
index f96380f572a..b881fb6df15 100644
--- a/gcc/d/dmd/denum.c
+++ b/gcc/d/dmd/denum.c
@@ -37,7 +37,7 @@ EnumDeclaration::EnumDeclaration(Loc loc, Identifier *id, Type *memtype)
defaultval = NULL;
sinit = NULL;
isdeprecated = false;
- protection = Prot(PROTundefined);
+ protection = Prot(Prot::undefined);
parent = NULL;
added = false;
inuse = 0;
@@ -550,7 +550,7 @@ void EnumMember::semantic(Scope *sc)
semanticRun = PASSsemantic;
- protection = ed->isAnonymous() ? ed->protection : Prot(PROTpublic);
+ protection = ed->isAnonymous() ? ed->protection : Prot(Prot::public_);
linkage = LINKd;
storage_class = STCmanifest;
userAttribDecl = ed->isAnonymous() ? ed->userAttribDecl : NULL;
diff --git a/gcc/d/dmd/dimport.c b/gcc/d/dmd/dimport.c
index 32602d27e6c..4b969d4dd60 100644
--- a/gcc/d/dmd/dimport.c
+++ b/gcc/d/dmd/dimport.c
@@ -35,7 +35,7 @@ Import::Import(Loc loc, Identifiers *packages, Identifier *id, Identifier *alias
this->id = id;
this->aliasId = aliasId;
this->isstatic = isstatic;
- this->protection = Prot(PROTprivate); // default to private
+ this->protection = Prot(Prot::private_); // default to private
this->pkg = NULL;
this->mod = NULL;
diff --git a/gcc/d/dmd/dmodule.c b/gcc/d/dmd/dmodule.c
index f9f59a20224..102bcdc32b6 100644
--- a/gcc/d/dmd/dmodule.c
+++ b/gcc/d/dmd/dmodule.c
@@ -884,7 +884,7 @@ bool Module::isPackageAccessible(Package *p, Prot protection, int flags)
if (insearch) // don't follow import cycles
return false;
if (flags & IgnorePrivateImports)
- protection = Prot(PROTpublic); // only consider public imports
+ protection = Prot(Prot::public_); // only consider public imports
insearch = true;
bool r = ScopeDsymbol::isPackageAccessible(p, protection);
insearch = false;
diff --git a/gcc/d/dmd/doc.c b/gcc/d/dmd/doc.c
index afe5c4bc00b..35ce2f6b7f8 100644
--- a/gcc/d/dmd/doc.c
+++ b/gcc/d/dmd/doc.c
@@ -732,7 +732,7 @@ void emitMemberComments(ScopeDsymbol *sds, OutBuffer *buf, Scope *sc)
void emitProtection(OutBuffer *buf, Prot prot)
{
- if (prot.kind != PROTundefined && prot.kind != PROTpublic)
+ if (prot.kind != Prot::undefined && prot.kind != Prot::public_)
{
protectionToBuffer(buf, prot);
buf->writeByte(' ');
@@ -833,7 +833,7 @@ void emitComment(Dsymbol *s, OutBuffer *buf, Scope *sc)
return;
if (!d->type && !d->isCtorDeclaration() && !d->isAliasDeclaration())
return;
- if (d->protection.kind == PROTprivate || sc->protection.kind == PROTprivate)
+ if (d->protection.kind == Prot::private_ || sc->protection.kind == Prot::private_)
return;
}
if (!com)
@@ -855,7 +855,7 @@ void emitComment(Dsymbol *s, OutBuffer *buf, Scope *sc)
}
else
{
- if (ad->prot().kind == PROTprivate || sc->protection.kind == PROTprivate)
+ if (ad->prot().kind == Prot::private_ || sc->protection.kind == Prot::private_)
return;
if (!ad->comment)
return;
@@ -869,7 +869,7 @@ void emitComment(Dsymbol *s, OutBuffer *buf, Scope *sc)
void visit(TemplateDeclaration *td)
{
//printf("TemplateDeclaration::emitComment() '%s', kind = %s\n", td->toChars(), td->kind());
- if (td->prot().kind == PROTprivate || sc->protection.kind == PROTprivate)
+ if (td->prot().kind == Prot::private_ || sc->protection.kind == Prot::private_)
return;
if (!td->comment)
return;
@@ -884,7 +884,7 @@ void emitComment(Dsymbol *s, OutBuffer *buf, Scope *sc)
void visit(EnumDeclaration *ed)
{
- if (ed->prot().kind == PROTprivate || sc->protection.kind == PROTprivate)
+ if (ed->prot().kind == Prot::private_ || sc->protection.kind == Prot::private_)
return;
if (ed->isAnonymous() && ed->members)
{
@@ -906,7 +906,7 @@ void emitComment(Dsymbol *s, OutBuffer *buf, Scope *sc)
void visit(EnumMember *em)
{
//printf("EnumMember::emitComment(%p '%s'), comment = '%s'\n", em, em->toChars(), em->comment);
- if (em->prot().kind == PROTprivate || sc->protection.kind == PROTprivate)
+ if (em->prot().kind == Prot::private_ || sc->protection.kind == Prot::private_)
return;
if (!em->comment)
return;
@@ -1233,7 +1233,7 @@ void toDocBuffer(Dsymbol *s, OutBuffer *buf, Scope *sc)
buf->writestring(": ");
any = 1;
}
- emitProtection(buf, Prot(PROTpublic));
+ emitProtection(buf, Prot(Prot::public_));
if (bc->sym)
{
buf->printf("$(DDOC_PSUPER_SYMBOL %s)", bc->sym->toPrettyChars());
@@ -1486,7 +1486,7 @@ void DocComment::writeSections(Scope *sc, Dsymbols *a, OutBuffer *buf)
for (UnitTestDeclaration *utd = s->ddocUnittest; utd; utd = utd->ddocUnittest)
{
- if (utd->protection.kind == PROTprivate || !utd->comment || !utd->fbody)
+ if (utd->protection.kind == Prot::private_ || !utd->comment || !utd->fbody)
continue;
// Strip whitespaces to avoid showing empty summary
diff --git a/gcc/d/dmd/dscope.c b/gcc/d/dmd/dscope.c
index d7460a07d7b..32aa965a932 100644
--- a/gcc/d/dmd/dscope.c
+++ b/gcc/d/dmd/dscope.c
@@ -81,7 +81,7 @@ Scope::Scope()
this->linkage = LINKd;
this->cppmangle = CPPMANGLEdefault;
this->inlining = PINLINEdefault;
- this->protection = Prot(PROTpublic);
+ this->protection = Prot(Prot::public_);
this->explicitProtection = 0;
this->stc = 0;
this->depdecl = NULL;
@@ -120,7 +120,7 @@ Scope *Scope::createGlobal(Module *_module)
sc->aligndecl = NULL;
sc->linkage = LINKd;
sc->inlining = PINLINEdefault;
- sc->protection = Prot(PROTpublic);
+ sc->protection = Prot(Prot::public_);
sc->_module = _module;
@@ -623,7 +623,7 @@ void *scope_search_fp(void *arg, const char *seed, int* cost)
if (scopesym != s->parent)
{
(*cost)++; // got to the symbol through an import
- if (s->prot().kind == PROTprivate)
+ if (s->prot().kind == Prot::private_)
return NULL;
}
}
diff --git a/gcc/d/dmd/dstruct.c b/gcc/d/dmd/dstruct.c
index f5a99541a67..86bb6c8aa76 100644
--- a/gcc/d/dmd/dstruct.c
+++ b/gcc/d/dmd/dstruct.c
@@ -187,7 +187,7 @@ AggregateDeclaration::AggregateDeclaration(Loc loc, Identifier *id)
this->loc = loc;
storage_class = 0;
- protection = Prot(PROTpublic);
+ protection = Prot(Prot::public_);
type = NULL;
structsize = 0; // size of struct
alignsize = 0; // size of struct for alignment purposes
@@ -228,7 +228,7 @@ Scope *AggregateDeclaration::newScope(Scope *sc)
sc2->parent = this;
if (isUnionDeclaration())
sc2->inunion = 1;
- sc2->protection = Prot(PROTpublic);
+ sc2->protection = Prot(Prot::public_);
sc2->explicitProtection = 0;
sc2->aligndecl = NULL;
sc2->userAttribDecl = NULL;
@@ -543,7 +543,7 @@ bool AggregateDeclaration::isDeprecated()
bool AggregateDeclaration::isExport() const
{
- return protection.kind == PROTexport;
+ return protection.kind == Prot::export_;
}
/***************************************
@@ -925,7 +925,7 @@ void AggregateDeclaration::makeNested()
// Emulate vthis->semantic()
vthis->storage_class |= STCfield;
vthis->parent = this;
- vthis->protection = Prot(PROTpublic);
+ vthis->protection = Prot(Prot::public_);
vthis->alignment = t->alignment();
vthis->semanticRun = PASSsemanticdone;
diff --git a/gcc/d/dmd/dsymbol.c b/gcc/d/dmd/dsymbol.c
index f835192fe34..d74fe6cfdd5 100644
--- a/gcc/d/dmd/dsymbol.c
+++ b/gcc/d/dmd/dsymbol.c
@@ -867,7 +867,7 @@ Module *Dsymbol::getAccessModule()
Prot Dsymbol::prot()
{
- return Prot(PROTpublic);
+ return Prot(Prot::public_);
}
/*************************************
@@ -1100,7 +1100,7 @@ Dsymbol *ScopeDsymbol::search(const Loc &loc, Identifier *ident, int flags)
for (size_t i = 0; i < importedScopes->length; i++)
{
// If private import, don't search it
- if ((flags & IgnorePrivateImports) && prots[i] == PROTprivate)
+ if ((flags & IgnorePrivateImports) && prots[i] == Prot::private_)
continue;
int sflags = flags & (IgnoreErrors | IgnoreAmbiguous | IgnoreSymbolVisibility); // remember these in recursive searches
@@ -1144,7 +1144,7 @@ Dsymbol *ScopeDsymbol::search(const Loc &loc, Identifier *ident, int flags)
* the other.
*/
if (s->isDeprecated() ||
- (s->prot().isMoreRestrictiveThan(s2->prot()) && s2->prot().kind != PROTnone))
+ (s->prot().isMoreRestrictiveThan(s2->prot()) && s2->prot().kind != Prot::none))
s = s2;
}
else
@@ -1201,7 +1201,7 @@ Dsymbol *ScopeDsymbol::search(const Loc &loc, Identifier *ident, int flags)
}
// TODO: remove once private symbol visibility has been deprecated
- if (!(flags & IgnoreErrors) && s->prot().kind == PROTprivate &&
+ if (!(flags & IgnoreErrors) && s->prot().kind == Prot::private_ &&
!s->isOverloadable() && !s->parent->isTemplateMixin() && !s->parent->isNspace())
{
AliasDeclaration *ad;
@@ -1257,7 +1257,7 @@ OverloadSet *ScopeDsymbol::mergeOverloadSet(Identifier *ident, OverloadSet *os,
{
if (s2->isDeprecated() ||
(s2->prot().isMoreRestrictiveThan(s->prot()) &&
- s->prot().kind != PROTnone))
+ s->prot().kind != Prot::none))
{
os->a[j] = s;
}
@@ -1294,7 +1294,7 @@ void ScopeDsymbol::importScope(Dsymbol *s, Prot protection)
}
}
importedScopes->push(s);
- prots = (PROTKIND *)mem.xrealloc(prots, importedScopes->length * sizeof(prots[0]));
+ prots = (Prot::Kind *)mem.xrealloc(prots, importedScopes->length * sizeof(prots[0]));
prots[importedScopes->length - 1] = protection.kind;
}
}
@@ -1333,7 +1333,7 @@ static void bitArrayLength(BitArray *array, size_t len)
void ScopeDsymbol::addAccessiblePackage(Package *p, Prot protection)
{
- BitArray *pary = protection.kind == PROTprivate ? &privateAccessiblePackages : &accessiblePackages;
+ BitArray *pary = protection.kind == Prot::private_ ? &privateAccessiblePackages : &accessiblePackages;
if (pary->len <= p->tag)
bitArrayLength(pary, p->tag + 1);
bitArraySet(pary, p->tag);
@@ -1342,7 +1342,7 @@ void ScopeDsymbol::addAccessiblePackage(Package *p, Prot protection)
bool ScopeDsymbol::isPackageAccessible(Package *p, Prot protection, int)
{
if ((p->tag < accessiblePackages.len && bitArrayGet(&accessiblePackages, p->tag)) ||
- (protection.kind == PROTprivate && p->tag < privateAccessiblePackages.len && bitArrayGet(&privateAccessiblePackages, p->tag)))
+ (protection.kind == Prot::private_ && p->tag < privateAccessiblePackages.len && bitArrayGet(&privateAccessiblePackages, p->tag)))
return true;
if (importedScopes)
{
@@ -1827,11 +1827,11 @@ Dsymbol *DsymbolTable::update(Dsymbol *s)
Prot::Prot()
{
- this->kind = PROTundefined;
+ this->kind = Prot::undefined;
this->pkg = NULL;
}
-Prot::Prot(PROTKIND kind)
+Prot::Prot(Prot::Kind kind)
{
this->kind = kind;
this->pkg = NULL;
@@ -1853,7 +1853,7 @@ bool Prot::operator==(const Prot& other) const
{
if (this->kind == other.kind)
{
- if (this->kind == PROTpackage)
+ if (this->kind == Prot::package_)
return this->pkg == other.pkg;
return true;
}
@@ -1875,7 +1875,7 @@ bool Prot::isSubsetOf(const Prot& parent) const
if (this->kind != parent.kind)
return false;
- if (this->kind == PROTpackage)
+ if (this->kind == Prot::package_)
{
if (!this->pkg)
return true;
diff --git a/gcc/d/dmd/dsymbol.h b/gcc/d/dmd/dsymbol.h
index 8db5cb6c0c8..63dbc2cccbc 100644
--- a/gcc/d/dmd/dsymbol.h
+++ b/gcc/d/dmd/dsymbol.h
@@ -83,24 +83,23 @@ struct Ungag
~Ungag() { global.gag = oldgag; }
};
-enum PROTKIND
-{
- PROTundefined,
- PROTnone, // no access
- PROTprivate,
- PROTpackage,
- PROTprotected,
- PROTpublic,
- PROTexport
-};
-
struct Prot
{
- PROTKIND kind;
+ enum Kind
+ {
+ undefined,
+ none, // no access
+ private_,
+ package_,
+ protected_,
+ public_,
+ export_
+ };
+ Kind kind;
Package *pkg;
Prot();
- Prot(PROTKIND kind);
+ Prot(Kind kind);
bool isMoreRestrictiveThan(const Prot other) const;
bool operator==(const Prot& other) const;
@@ -109,7 +108,7 @@ struct Prot
// in hdrgen.c
void protectionToBuffer(OutBuffer *buf, Prot prot);
-const char *protectionToChars(PROTKIND kind);
+const char *protectionToChars(Prot::Kind kind);
/* State of symbol in winding its way through the passes of the compiler
*/
@@ -296,7 +295,7 @@ public:
private:
Dsymbols *importedScopes; // imported Dsymbol's
- PROTKIND *prots; // array of PROTKIND, one for each import
+ Prot::Kind *prots; // array of PROTKIND, one for each import
BitArray accessiblePackages, privateAccessiblePackages;
diff --git a/gcc/d/dmd/dtemplate.c b/gcc/d/dmd/dtemplate.c
index 5ec9a4b609c..a35721cc9cd 100644
--- a/gcc/d/dmd/dtemplate.c
+++ b/gcc/d/dmd/dtemplate.c
@@ -535,7 +535,7 @@ TemplateDeclaration::TemplateDeclaration(Loc loc, Identifier *id,
this->ismixin = ismixin;
this->isstatic = true;
this->previous = NULL;
- this->protection = Prot(PROTundefined);
+ this->protection = Prot(Prot::undefined);
this->instances = NULL;
// Compute in advance for Ddoc's use
@@ -6164,7 +6164,7 @@ Lerror:
// Declare each template parameter as an alias for the argument type
Scope *paramscope = scope->push();
paramscope->stc = 0;
- paramscope->protection = Prot(PROTpublic); // Bugzilla 14169: template parameters should be public
+ paramscope->protection = Prot(Prot::public_); // Bugzilla 14169: template parameters should be public
declareParameters(paramscope);
paramscope->pop();
@@ -8408,7 +8408,7 @@ void TemplateMixin::semantic(Scope *sc)
ScopeDsymbol *sds = (ScopeDsymbol *)sce->scopesym;
if (sds)
{
- sds->importScope(this, Prot(PROTpublic));
+ sds->importScope(this, Prot(Prot::public_));
break;
}
}
diff --git a/gcc/d/dmd/expressionsem.c b/gcc/d/dmd/expressionsem.c
index 25f4bd51a59..412d416715b 100644
--- a/gcc/d/dmd/expressionsem.c
+++ b/gcc/d/dmd/expressionsem.c
@@ -1537,7 +1537,7 @@ public:
sc = sc->push(); // just create new scope
sc->flags &= ~SCOPEctfe; // temporary stop CTFE
- sc->protection = Prot(PROTpublic); // Bugzilla 12506
+ sc->protection = Prot(Prot::public_); // Bugzilla 12506
if (!exp->type || exp->type == Type::tvoid)
{
diff --git a/gcc/d/dmd/func.c b/gcc/d/dmd/func.c
index 276303a2851..008f09726b4 100644
--- a/gcc/d/dmd/func.c
+++ b/gcc/d/dmd/func.c
@@ -739,7 +739,7 @@ void FuncDeclaration::semantic(Scope *sc)
const char *sfunc;
if (isStatic())
sfunc = "static";
- else if (protection.kind == PROTprivate || protection.kind == PROTpackage)
+ else if (protection.kind == Prot::private_ || protection.kind == Prot::package_)
sfunc = protectionToChars(protection.kind);
else
sfunc = "non-virtual";
@@ -748,8 +748,8 @@ void FuncDeclaration::semantic(Scope *sc)
if (isOverride() && !isVirtual())
{
- PROTKIND kind = prot().kind;
- if ((kind == PROTprivate || kind == PROTpackage) && isMember())
+ Prot::Kind kind = prot().kind;
+ if ((kind == Prot::private_ || kind == Prot::package_) && isMember())
error("%s method is not virtual and cannot override", protectionToChars(kind));
else
error("cannot override a non-virtual function");
@@ -868,7 +868,7 @@ void FuncDeclaration::semantic(Scope *sc)
if (f2)
{
f2 = f2->overloadExactMatch(type);
- if (f2 && f2->isFinalFunc() && f2->prot().kind != PROTprivate)
+ if (f2 && f2->isFinalFunc() && f2->prot().kind != Prot::private_)
error("cannot override final function %s", f2->toPrettyChars());
}
}
@@ -1137,7 +1137,7 @@ void FuncDeclaration::semantic(Scope *sc)
if (f2)
{
f2 = f2->overloadExactMatch(type);
- if (f2 && f2->isFinalFunc() && f2->prot().kind != PROTprivate)
+ if (f2 && f2->isFinalFunc() && f2->prot().kind != Prot::private_)
error("cannot override final function %s.%s", b->sym->toChars(), f2->toPrettyChars());
}
}
@@ -1465,7 +1465,7 @@ void FuncDeclaration::semantic3(Scope *sc)
STCdeprecated | STCoverride |
STC_TYPECTOR | STCfinal | STCtls | STCgshared | STCref | STCreturn |
STCproperty | STCnothrow | STCpure | STCsafe | STCtrusted | STCsystem);
- sc2->protection = Prot(PROTpublic);
+ sc2->protection = Prot(Prot::public_);
sc2->explicitProtection = 0;
sc2->aligndecl = NULL;
if (this->ident != Id::require && this->ident != Id::ensure)
@@ -3755,14 +3755,14 @@ bool FuncDeclaration::isDllMain()
bool FuncDeclaration::isExport() const
{
- return protection.kind == PROTexport;
+ return protection.kind == Prot::export_;
}
bool FuncDeclaration::isImportedSymbol() const
{
//printf("isImportedSymbol()\n");
//printf("protection = %d\n", protection);
- return (protection.kind == PROTexport) && !fbody;
+ return (protection.kind == Prot::export_) && !fbody;
}
// Determine if function goes into virtual function pointer table
@@ -3774,7 +3774,7 @@ bool FuncDeclaration::isVirtual()
Dsymbol *p = toParent();
return isMember() &&
- !(isStatic() || protection.kind == PROTprivate || protection.kind == PROTpackage) &&
+ !(isStatic() || protection.kind == Prot::private_ || protection.kind == Prot::package_) &&
p->isClassDeclaration() &&
!(p->isInterfaceDeclaration() && isFinalFunc());
}
@@ -4136,7 +4136,7 @@ bool FuncDeclaration::addPreInvariant()
ClassDeclaration *cd = ad ? ad->isClassDeclaration() : NULL;
return (ad && !(cd && cd->isCPPclass()) &&
global.params.useInvariants == CHECKENABLEon &&
- (protection.kind == PROTprotected || protection.kind == PROTpublic || protection.kind == PROTexport) &&
+ (protection.kind == Prot::protected_ || protection.kind == Prot::public_ || protection.kind == Prot::export_) &&
!naked);
}
@@ -4147,7 +4147,7 @@ bool FuncDeclaration::addPostInvariant()
return (ad && !(cd && cd->isCPPclass()) &&
ad->inv &&
global.params.useInvariants == CHECKENABLEon &&
- (protection.kind == PROTprotected || protection.kind == PROTpublic || protection.kind == PROTexport) &&
+ (protection.kind == Prot::protected_ || protection.kind == Prot::public_ || protection.kind == Prot::export_) &&
!naked);
}
@@ -4254,7 +4254,7 @@ FuncDeclaration *FuncDeclaration::genCfunc(Parameters *fparams, Type *treturn, I
{
tf = new TypeFunction(ParameterList(fparams), treturn, LINKc, stc);
fd = new FuncDeclaration(Loc(), Loc(), id, STCstatic, tf);
- fd->protection = Prot(PROTpublic);
+ fd->protection = Prot(Prot::public_);
fd->linkage = LINKc;
st->insert(fd);
diff --git a/gcc/d/dmd/hdrgen.c b/gcc/d/dmd/hdrgen.c
index 2c88ef597c6..11a06a88ce9 100644
--- a/gcc/d/dmd/hdrgen.c
+++ b/gcc/d/dmd/hdrgen.c
@@ -3381,7 +3381,7 @@ void protectionToBuffer(OutBuffer *buf, Prot prot)
if (p)
buf->writestring(p);
- if (prot.kind == PROTpackage && prot.pkg)
+ if (prot.kind == Prot::package_ && prot.pkg)
{
buf->writeByte('(');
buf->writestring(prot.pkg->toPrettyChars(true));
@@ -3389,17 +3389,17 @@ void protectionToBuffer(OutBuffer *buf, Prot prot)
}
}
-const char *protectionToChars(PROTKIND kind)
+const char *protectionToChars(Prot::Kind kind)
{
switch (kind)
{
- case PROTundefined: return NULL;
- case PROTnone: return "none";
- case PROTprivate: return "private";
- case PROTpackage: return "package";
- case PROTprotected: return "protected";
- case PROTpublic: return "public";
- case PROTexport: return "export";
+ case Prot::undefined: return NULL;
+ case Prot::none: return "none";
+ case Prot::private_: return "private";
+ case Prot::package_: return "package";
+ case Prot::protected_: return "protected";
+ case Prot::public_: return "public";
+ case Prot::export_: return "export";
default: assert(0);
}
return NULL; // never reached
diff --git a/gcc/d/dmd/json.c b/gcc/d/dmd/json.c
index 0c3b7b617b8..b1b90d67334 100644
--- a/gcc/d/dmd/json.c
+++ b/gcc/d/dmd/json.c
@@ -438,7 +438,7 @@ public:
property("kind", s->kind());
}
- if (s->prot().kind != PROTpublic) // TODO: How about package(names)?
+ if (s->prot().kind != Prot::public_) // TODO: How about package(names)?
property("protection", protectionToChars(s->prot().kind));
if (EnumMember *em = s->isEnumMember())
@@ -546,7 +546,7 @@ public:
property("kind", s->kind());
property("comment", (const char *)s->comment);
property("line", "char", &s->loc);
- if (s->prot().kind != PROTpublic)
+ if (s->prot().kind != Prot::public_)
property("protection", protectionToChars(s->prot().kind));
if (s->aliasId)
property("alias", s->aliasId->toChars());
diff --git a/gcc/d/dmd/mtype.c b/gcc/d/dmd/mtype.c
index 30fd54da185..7684516da99 100644
--- a/gcc/d/dmd/mtype.c
+++ b/gcc/d/dmd/mtype.c
@@ -5521,7 +5521,7 @@ Type *TypeFunction::semantic(Loc loc, Scope *sc)
*/
Scope *argsc = sc->push();
argsc->stc = 0; // don't inherit storage class
- argsc->protection = Prot(PROTpublic);
+ argsc->protection = Prot(Prot::public_);
argsc->func = NULL;
size_t dim = tf->parameterList.length();
diff --git a/gcc/d/dmd/nspace.c b/gcc/d/dmd/nspace.c
index bee30e98250..71d1c6f5552 100644
--- a/gcc/d/dmd/nspace.c
+++ b/gcc/d/dmd/nspace.c
@@ -50,7 +50,7 @@ void Nspace::addMember(Scope *sc, ScopeDsymbol *sds)
ScopeDsymbol *sds2 = sce->scopesym;
if (sds2)
{
- sds2->importScope(this, Prot(PROTpublic));
+ sds2->importScope(this, Prot(Prot::public_));
break;
}
}
diff --git a/gcc/d/dmd/parse.c b/gcc/d/dmd/parse.c
index 38da5808484..79acab731a6 100644
--- a/gcc/d/dmd/parse.c
+++ b/gcc/d/dmd/parse.c
@@ -231,7 +231,7 @@ struct PrefixAttributes
: storageClass(STCundefined),
depmsg(NULL),
link(LINKdefault),
- protection(PROTundefined),
+ protection(Prot::undefined),
setAlignment(false),
ealign(NULL),
udas(NULL),
@@ -262,7 +262,7 @@ Dsymbols *Parser::parseDeclDefs(int once, Dsymbol **pLastDecl, PrefixAttributes
pAttrs = &attrs;
pAttrs->comment = token.blockComment;
}
- PROTKIND prot;
+ Prot::Kind prot;
StorageClass stc;
Condition *condition;
@@ -731,14 +731,14 @@ Dsymbols *Parser::parseDeclDefs(int once, Dsymbol **pLastDecl, PrefixAttributes
break;
}
- case TOKprivate: prot = PROTprivate; goto Lprot;
- case TOKpackage: prot = PROTpackage; goto Lprot;
- case TOKprotected: prot = PROTprotected; goto Lprot;
- case TOKpublic: prot = PROTpublic; goto Lprot;
- case TOKexport: prot = PROTexport; goto Lprot;
+ case TOKprivate: prot = Prot::private_; goto Lprot;
+ case TOKpackage: prot = Prot::package_; goto Lprot;
+ case TOKprotected: prot = Prot::protected_; goto Lprot;
+ case TOKpublic: prot = Prot::public_; goto Lprot;
+ case TOKexport: prot = Prot::export_; goto Lprot;
Lprot:
{
- if (pAttrs->protection.kind != PROTundefined)
+ if (pAttrs->protection.kind != Prot::undefined)
{
if (pAttrs->protection.kind != prot)
error("conflicting protection attribute '%s' and '%s'",
@@ -753,7 +753,7 @@ Dsymbols *Parser::parseDeclDefs(int once, Dsymbol **pLastDecl, PrefixAttributes
// optional qualified package identifier to bind
// protection to
Identifiers *pkg_prot_idents = NULL;
- if (pAttrs->protection.kind == PROTpackage && token.value == TOKlparen)
+ if (pAttrs->protection.kind == Prot::package_ && token.value == TOKlparen)
{
pkg_prot_idents = parseQualifiedIdentifier("protection package");
@@ -770,14 +770,14 @@ Dsymbols *Parser::parseDeclDefs(int once, Dsymbol **pLastDecl, PrefixAttributes
Loc attrloc = token.loc;
a = parseBlock(pLastDecl, pAttrs);
- if (pAttrs->protection.kind != PROTundefined)
+ if (pAttrs->protection.kind != Prot::undefined)
{
- if (pAttrs->protection.kind == PROTpackage && pkg_prot_idents)
+ if (pAttrs->protection.kind == Prot::package_ && pkg_prot_idents)
s = new ProtDeclaration(attrloc, pkg_prot_idents, a);
else
s = new ProtDeclaration(attrloc, pAttrs->protection, a);
- pAttrs->protection = Prot(PROTundefined);
+ pAttrs->protection = Prot(Prot::undefined);
}
break;
}
@@ -2365,27 +2365,27 @@ BaseClasses *Parser::parseBaseClasses()
for (; 1; nextToken())
{
bool prot = false;
- Prot protection = Prot(PROTpublic);
+ Prot protection = Prot(Prot::public_);
switch (token.value)
{
case TOKprivate:
prot = true;
- protection = Prot(PROTprivate);
+ protection = Prot(Prot::private_);
nextToken();
break;
case TOKpackage:
prot = true;
- protection = Prot(PROTpackage);
+ protection = Prot(Prot::package_);
nextToken();
break;
case TOKprotected:
prot = true;
- protection = Prot(PROTprotected);
+ protection = Prot(Prot::protected_);
nextToken();
break;
case TOKpublic:
prot = true;
- protection = Prot(PROTpublic);
+ protection = Prot(Prot::public_);
nextToken();
break;
default: break;
diff --git a/gcc/d/modules.cc b/gcc/d/modules.cc
index 0ff41630f05..79f42c68b10 100644
--- a/gcc/d/modules.cc
+++ b/gcc/d/modules.cc
@@ -147,7 +147,7 @@ get_internal_fn (tree ident)
Identifier::idPool (name));
fd->loc = Loc (mod->srcfile->toChars (), 1, 0);
fd->parent = mod;
- fd->protection.kind = PROTprivate;
+ fd->protection.kind = Prot::private_;
fd->semanticRun = PASSsemantic3done;
return fd;
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2020-06-10 3:44 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-10 3:44 [gcc(refs/users/guojiufu/heads/personal-branch)] d: Merge upstream dmd 73d8e2fec Jiu Fu Guo
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).