diff options
-rw-r--r-- | gcc/d/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/d/dmd/dclass.c | 1 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/testsuite/gdc.test/compilable/imports/pr9471a.d | 2 | ||||
-rw-r--r-- | gcc/testsuite/gdc.test/compilable/imports/pr9471b.d | 5 | ||||
-rw-r--r-- | gcc/testsuite/gdc.test/compilable/imports/pr9471c.d | 18 | ||||
-rw-r--r-- | gcc/testsuite/gdc.test/compilable/imports/pr9471d.d | 1 | ||||
-rw-r--r-- | gcc/testsuite/gdc.test/compilable/pr9471.d | 6 |
8 files changed, 47 insertions, 1 deletions
diff --git a/gcc/d/ChangeLog b/gcc/d/ChangeLog index 9cc59c8ad1d..c3f56590298 100644 --- a/gcc/d/ChangeLog +++ b/gcc/d/ChangeLog @@ -1,3 +1,9 @@ +2020-05-16 Iain Buclaw <ibuclaw@gdcproject.org> + + PR d/95155 + * dmd/dclass.c (ClassDeclaration::semantic): Don't prematurely + set done on semantic analysis. + 2020-04-07 Iain Buclaw <ibuclaw@gdcproject.org> PR d/94240 diff --git a/gcc/d/dmd/dclass.c b/gcc/d/dmd/dclass.c index 572b3e24387..66869361dcb 100644 --- a/gcc/d/dmd/dclass.c +++ b/gcc/d/dmd/dclass.c @@ -395,7 +395,6 @@ void ClassDeclaration::semantic(Scope *sc) } else if (symtab && !scx) { - semanticRun = PASSsemanticdone; return; } semanticRun = PASSsemantic; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b69958e23d0..0b70f660fb8 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,12 @@ +2020-05-16 Iain Buclaw <ibuclaw@gdcproject.org> + + PR d/95155 + * gdc.test/compilable/imports/pr9471a.d: New test. + * gdc.test/compilable/imports/pr9471b.d: New test. + * gdc.test/compilable/imports/pr9471c.d: New test. + * gdc.test/compilable/imports/pr9471d.d: New test. + * gdc.test/compilable/pr9471.d: New test. + 2020-05-14 Szabolcs Nagy <szabolcs.nagy@arm.com> Backport from mainline. diff --git a/gcc/testsuite/gdc.test/compilable/imports/pr9471a.d b/gcc/testsuite/gdc.test/compilable/imports/pr9471a.d new file mode 100644 index 00000000000..79b78e1e52a --- /dev/null +++ b/gcc/testsuite/gdc.test/compilable/imports/pr9471a.d @@ -0,0 +1,2 @@ +import imports.pr9471c; +class AggregateDeclaration : ScopeDsymbol { } diff --git a/gcc/testsuite/gdc.test/compilable/imports/pr9471b.d b/gcc/testsuite/gdc.test/compilable/imports/pr9471b.d new file mode 100644 index 00000000000..a46a12c496f --- /dev/null +++ b/gcc/testsuite/gdc.test/compilable/imports/pr9471b.d @@ -0,0 +1,5 @@ +import imports.pr9471a; +class ClassDeclaration : AggregateDeclaration +{ + void isBaseOf(); +} diff --git a/gcc/testsuite/gdc.test/compilable/imports/pr9471c.d b/gcc/testsuite/gdc.test/compilable/imports/pr9471c.d new file mode 100644 index 00000000000..d80a61480ce --- /dev/null +++ b/gcc/testsuite/gdc.test/compilable/imports/pr9471c.d @@ -0,0 +1,18 @@ +import imports.pr9471b; + +struct Array(T) +{ + static if (is(typeof(T.opCmp))) { } +} +alias ClassDeclarations = Array!ClassDeclaration; + +class Dsymbol +{ + void addObjcSymbols(ClassDeclarations); +} + +class ScopeDsymbol : Dsymbol +{ + import imports.pr9471d; + void importScope(); +} diff --git a/gcc/testsuite/gdc.test/compilable/imports/pr9471d.d b/gcc/testsuite/gdc.test/compilable/imports/pr9471d.d new file mode 100644 index 00000000000..187b9083294 --- /dev/null +++ b/gcc/testsuite/gdc.test/compilable/imports/pr9471d.d @@ -0,0 +1 @@ +// Module needs to be imported to trigger bug. diff --git a/gcc/testsuite/gdc.test/compilable/pr9471.d b/gcc/testsuite/gdc.test/compilable/pr9471.d new file mode 100644 index 00000000000..37ff32e4957 --- /dev/null +++ b/gcc/testsuite/gdc.test/compilable/pr9471.d @@ -0,0 +1,6 @@ +// PERMUTE_ARGS: +// EXTRA_FILES: imports/pr9471a.d imports/pr9471b.d imports/pr9471c.d imports/pr9471d.d +import imports.pr9471a; +import imports.pr9471b; + +static assert (__traits(getVirtualIndex, ClassDeclaration.isBaseOf) == 7); |