re PR d/90651 (ICE in FuncDeclaration::semantic3, at d/dmd/func.c:1524)
PR d/90651 d/dmd: Merge upstream dmd 78dc31152 Fixes bug where the object module was not always implicitly imported. Reviewed-on: https://github.com/dlang/dmd/pull/9999 From-SVN: r272340
This commit is contained in:
parent
e62b9f8e08
commit
347f5c885f
8 changed files with 51 additions and 2 deletions
|
@ -1,4 +1,4 @@
|
|||
bbc5ea66ab41ebd14abd9a0fbb9ca6ef6b2dcb14
|
||||
78dc311524341a76008b341ff6427e5a16e285db
|
||||
|
||||
The first line of this file holds the git revision number of the last
|
||||
merge done from the dlang/dmd repository.
|
||||
|
|
|
@ -679,7 +679,8 @@ void Module::importAll(Scope *)
|
|||
// If it isn't there, some compiler rewrites, like
|
||||
// classinst == classinst -> .object.opEquals(classinst, classinst)
|
||||
// would fail inside object.d.
|
||||
if (members->dim == 0 || ((*members)[0])->ident != Id::object)
|
||||
if (members->dim == 0 || ((*members)[0])->ident != Id::object ||
|
||||
(*members)[0]->isImport() == NULL)
|
||||
{
|
||||
Import *im = new Import(Loc(), NULL, Id::object, NULL, 0);
|
||||
members->shift(im);
|
||||
|
|
3
gcc/testsuite/gdc.test/compilable/test19912.d
Normal file
3
gcc/testsuite/gdc.test/compilable/test19912.d
Normal file
|
@ -0,0 +1,3 @@
|
|||
// PERMUTE_ARGS:
|
||||
import object;
|
||||
void fun(string) { }
|
9
gcc/testsuite/gdc.test/fail_compilation/fail19912a.d
Normal file
9
gcc/testsuite/gdc.test/fail_compilation/fail19912a.d
Normal file
|
@ -0,0 +1,9 @@
|
|||
// PERMUTE_ARGS:
|
||||
/*
|
||||
TEST_OUTPUT:
|
||||
---
|
||||
fail_compilation/fail19912a.d(8): Error: struct `fail19912a.object` conflicts with import `fail19912a.object` at fail_compilation/fail19912a.d
|
||||
---
|
||||
*/
|
||||
struct object { }
|
||||
void fun(string) { }
|
9
gcc/testsuite/gdc.test/fail_compilation/fail19912b.d
Normal file
9
gcc/testsuite/gdc.test/fail_compilation/fail19912b.d
Normal file
|
@ -0,0 +1,9 @@
|
|||
// PERMUTE_ARGS:
|
||||
/*
|
||||
TEST_OUTPUT:
|
||||
---
|
||||
fail_compilation/fail19912b.d(8): Error: class `fail19912b.object` conflicts with import `fail19912b.object` at fail_compilation/fail19912b.d
|
||||
---
|
||||
*/
|
||||
class object { }
|
||||
void fun(string) { }
|
9
gcc/testsuite/gdc.test/fail_compilation/fail19912c.d
Normal file
9
gcc/testsuite/gdc.test/fail_compilation/fail19912c.d
Normal file
|
@ -0,0 +1,9 @@
|
|||
// PERMUTE_ARGS:
|
||||
/*
|
||||
TEST_OUTPUT:
|
||||
---
|
||||
fail_compilation/fail19912c.d(8): Error: alias `fail19912c.object` conflicts with import `fail19912c.object` at fail_compilation/fail19912c.d
|
||||
---
|
||||
*/
|
||||
alias object = int;
|
||||
void fun(string) { }
|
9
gcc/testsuite/gdc.test/fail_compilation/fail19912d.d
Normal file
9
gcc/testsuite/gdc.test/fail_compilation/fail19912d.d
Normal file
|
@ -0,0 +1,9 @@
|
|||
// PERMUTE_ARGS:
|
||||
/*
|
||||
TEST_OUTPUT:
|
||||
---
|
||||
fail_compilation/fail19912d.d(8): Error: enum `fail19912d.object` conflicts with import `fail19912d.object` at fail_compilation/fail19912d.d
|
||||
---
|
||||
*/
|
||||
enum object { }
|
||||
void fun(string) { }
|
9
gcc/testsuite/gdc.test/fail_compilation/fail19912e.d
Normal file
9
gcc/testsuite/gdc.test/fail_compilation/fail19912e.d
Normal file
|
@ -0,0 +1,9 @@
|
|||
// PERMUTE_ARGS:
|
||||
/*
|
||||
TEST_OUTPUT:
|
||||
---
|
||||
fail_compilation/fail19912e.d(8): Error: function `fail19912e.object` conflicts with import `fail19912e.object` at fail_compilation/fail19912e.d
|
||||
---
|
||||
*/
|
||||
void object() { }
|
||||
void fun(string) { }
|
Loading…
Add table
Reference in a new issue