re PR d/89016 (ICE in ArrayLiteralExp::toStringExp, at d/dmd/expression.c:3873)
PR d/89016 d/dmd: Merge upstream dmd da26db819 Backports supplementary fix for ICE on importing deprecated modules. Updates https://gcc.gnu.org/PR89016 Reviewed-on: https://github.com/dlang/dmd/pull/9436 From-SVN: r269560
This commit is contained in:
parent
055c7e4113
commit
42a84c28ef
|
@ -1,4 +1,4 @@
|
|||
0fc786f4908aa6bdd4220af87995333b1f24c3d7
|
||||
da26db81943952c7e35dab98650df589ec122485
|
||||
|
||||
The first line of this file holds the git revision number of the last
|
||||
merge done from the dlang/dmd repository.
|
||||
|
|
|
@ -23,8 +23,6 @@
|
|||
#include "attrib.h"
|
||||
#include "hdrgen.h"
|
||||
|
||||
StringExp *semanticString(Scope *sc, Expression *exp, const char *s);
|
||||
|
||||
/********************************* Import ****************************/
|
||||
|
||||
Import::Import(Loc loc, Identifiers *packages, Identifier *id, Identifier *aliasId,
|
||||
|
@ -175,19 +173,17 @@ void Import::importAll(Scope *sc)
|
|||
load(sc);
|
||||
if (mod) // if successfully loaded module
|
||||
{
|
||||
mod->importAll(NULL);
|
||||
|
||||
if (mod->md && mod->md->isdeprecated)
|
||||
{
|
||||
Expression *msg = mod->md->msg;
|
||||
if (msg)
|
||||
msg = semanticString(sc, msg, "deprecation message");
|
||||
if (StringExp *se = msg ? msg->toStringExp() : NULL)
|
||||
mod->deprecation(loc, "is deprecated - %s", se->string);
|
||||
else
|
||||
mod->deprecation(loc, "is deprecated");
|
||||
}
|
||||
|
||||
mod->importAll(NULL);
|
||||
|
||||
if (sc->explicitProtection)
|
||||
protection = sc->protection;
|
||||
if (!isstatic && !aliasId && !names.dim)
|
||||
|
|
|
@ -3,16 +3,17 @@
|
|||
TEST_OUTPUT
|
||||
---
|
||||
fail_compilation/imports/fail19609a.d(1): Error: `string` expected for deprecation message, not `([""])` of type `string[]`
|
||||
fail_compilation/fail19609.d(16): Deprecation: module `imports.fail19609a` is deprecated
|
||||
fail_compilation/imports/fail19609a.d(1): Error: `string` expected for deprecation message, not `([""])` of type `string[]`
|
||||
fail_compilation/imports/fail19609b.d(1): Error: `string` expected for deprecation message, not `([1])` of type `int[]`
|
||||
fail_compilation/fail19609.d(17): Deprecation: module `imports.fail19609b` is deprecated
|
||||
fail_compilation/fail19609.d(15): Deprecation: module `imports.fail19609a` is deprecated
|
||||
fail_compilation/imports/fail19609b.d(1): Error: `string` expected for deprecation message, not `([1])` of type `int[]`
|
||||
fail_compilation/fail19609.d(16): Deprecation: module `imports.fail19609b` is deprecated
|
||||
fail_compilation/imports/fail19609c.d(1): Error: `string` expected for deprecation message, not `(123.4F)` of type `float`
|
||||
fail_compilation/fail19609.d(18): Deprecation: module `imports.fail19609c` is deprecated
|
||||
fail_compilation/imports/fail19609c.d(1): Error: `string` expected for deprecation message, not `(123.4F)` of type `float`
|
||||
fail_compilation/fail19609.d(17): Deprecation: module `imports.fail19609c` is deprecated
|
||||
fail_compilation/imports/fail19609d.d(1): Error: undefined identifier `msg`
|
||||
fail_compilation/fail19609.d(19): Deprecation: module `imports.fail19609d` is deprecated
|
||||
---
|
||||
*/
|
||||
import imports.fail19609a;
|
||||
import imports.fail19609b;
|
||||
import imports.fail19609c;
|
||||
enum msg = "You should not be able to see me";
|
||||
import imports.fail19609d;
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
deprecated(msg) module imports.fail19609d;
|
||||
enum msg = "You won't see this either";
|
Loading…
Reference in New Issue