PR d/90661
d/dmd: Merge upstream dmd
c74e624c9
Fixes segmentation fault in AlignDeclaration::syntaxCopy.
Reviewed-on: https://github.com/dlang/dmd/pull/10001
From-SVN: r272341
-78dc311524341a76008b341ff6427e5a16e285db
+c74e624c9a0a9e7e39f96b2f005f86e123df56c9
The first line of this file holds the git revision number of the last
merge done from the dlang/dmd repository.
{
assert(!s);
return new AlignDeclaration(loc,
- ealign->syntaxCopy(), Dsymbol::arraySyntaxCopy(decl));
+ ealign ? ealign->syntaxCopy() : NULL,
+ Dsymbol::arraySyntaxCopy(decl));
}
Scope *AlignDeclaration::newScope(Scope *sc)
static assert(C2.int1.offsetof == payloadOffset + 8);
static assert(C2.alignof == size_t.sizeof);
static assert(__traits(classInstanceSize, C2) == payloadOffset + 12);
+
+
+/***************************************************/
+// https://issues.dlang.org/show_bug.cgi?id=19914
+// https://issues.dlang.org/show_bug.cgi?id=19915
+
+class TemplatedClass(T)
+{
+ align T field;
+}
+
+mixin TemplatedClass!(string);
+alias TCint = TemplatedClass!(int);
--- /dev/null
+// PERMUTE_ARGS:
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail19914.d(9): Error: undefined identifier `c` in module `fail19914`
+fail_compilation/fail19914.d(10): Error: mixin `fail19914.a!string` error instantiating
+---
+*/
+class a(b) { align.c d; }
+mixin a!(string);
--- /dev/null
+// PERMUTE_ARGS:
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail19915.d(9): Error: undefined identifier `c` in module `fail19915`
+fail_compilation/fail19915.d(10): Error: template instance `fail19915.a!int` error instantiating
+---
+*/
+class a (b) { align.c d; }
+alias a!(int) e;