Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix Issue 19959 - Eponymous template FQN's re-state the template name #10846

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
19 changes: 18 additions & 1 deletion src/dmd/dsymbol.d
Original file line number Diff line number Diff line change
Expand Up @@ -663,8 +663,25 @@
// Fill in comp[] and compute length of final result
size_t length = 0;
int i;
for (Dsymbol p = this; p; p = p.parent)
for (Dsymbol p = this, pparent; p; p = pparent)
{
Dsymbol sym;
pparent = p.parent;
if (pparent)
{
if (auto ti = pparent.isTemplateInstance())
if (auto ident = p.getIdent())
if (ident is ti.name)
if (Dsymbol.oneMembers(ti.members, &sym, ident) && sym is p)
continue;

if (auto td = pparent.isTemplateDeclaration())
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since the logic is duplicated, I suggest moving the check in a function that receives a ScopeDsymbol (or a template function that receives a template instance or a template declaration) so that we save some lines of code.

if (auto ident = p.getIdent())
if (ident is td.ident)
if (Dsymbol.oneMembers(td.members, &sym, ident) && sym is p)
continue;

Check warning on line 682 in src/dmd/dsymbol.d

View check run for this annotation

Codecov / codecov/patch

src/dmd/dsymbol.d#L679-L682

Added lines #L679 - L682 were not covered by tests
}

const s = QualifyTypes ? p.toPrettyCharsHelper() : p.toChars();
const len = strlen(s);
comp[i] = s[0 .. len];
Expand Down
2 changes: 1 addition & 1 deletion test/compilable/depmsg.d
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ compilable/depmsg.d(43): Deprecation: enum `depmsg.main.Inner.E` is deprecated -
compilable/depmsg.d(43): Deprecation: enum `depmsg.main.Inner.E` is deprecated - With message!
compilable/depmsg.d(45): Deprecation: alias `depmsg.main.Inner.G` is deprecated - With message!
compilable/depmsg.d(46): Deprecation: variable `depmsg.main.Inner.H` is deprecated - With message!
compilable/depmsg.d(47): Deprecation: class `depmsg.main.Inner.I!().I` is deprecated - With message!
compilable/depmsg.d(47): Deprecation: class `depmsg.main.Inner.I!()` is deprecated - With message!
---
*/
void main()
Expand Down
6 changes: 3 additions & 3 deletions test/compilable/extra-files/json.out
Original file line number Diff line number Diff line change
Expand Up @@ -145,10 +145,10 @@
]
},
{
"base": "json.Bar!1.Bar",
"base": "json.Bar!1",
"char": 1,
"interfaces": [
"json.Baz!(int, 2, null).Baz"
"json.Baz!(int, 2, null)"
],
"kind": "class",
"line": 27,
Expand Down Expand Up @@ -205,7 +205,7 @@
"line": 33,
"name": "t",
"overrides": [
"json.Baz!(int, 2, null).Baz.t"
"json.Baz!(int, 2, null).t"
],
"storageClass": [
"override"
Expand Down
4 changes: 2 additions & 2 deletions test/compilable/sw_transition_field.d
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ TEST_OUTPUT:
---
compilable/sw_transition_field.d(15): `sw_transition_field.S1.ix` is `immutable` field
compilable/sw_transition_field.d(16): `sw_transition_field.S1.cx` is `const` field
compilable/sw_transition_field.d(21): `sw_transition_field.S2!(immutable(int)).S2.f` is `immutable` field
compilable/sw_transition_field.d(21): `sw_transition_field.S2!(const(int)).S2.f` is `const` field
compilable/sw_transition_field.d(21): `sw_transition_field.S2!(immutable(int)).f` is `immutable` field
compilable/sw_transition_field.d(21): `sw_transition_field.S2!(const(int)).f` is `const` field
---
*/

Expand Down
2 changes: 1 addition & 1 deletion test/fail_compilation/bug8150b.d
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
TEST_OUTPUT:
---
fail_compilation/bug8150b.d(15): Error: `object.Exception` is thrown but not caught
fail_compilation/bug8150b.d(13): Error: `nothrow` constructor `bug8150b.Foo.__ctor!().this` may throw
fail_compilation/bug8150b.d(13): Error: `nothrow` constructor `bug8150b.Foo.__ctor!()` may throw
fail_compilation/bug8150b.d(20): Error: template instance `bug8150b.Foo.__ctor!()` error instantiating
---
*/
Expand Down
2 changes: 1 addition & 1 deletion test/fail_compilation/bug9631.d
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ void arg()
/*
TEST_OUTPUT:
---
fail_compilation/bug9631.d(106): Error: function `bug9631.targ.ft!().ft(S _param_0)` is not callable using argument types `(S)`
fail_compilation/bug9631.d(106): Error: function `bug9631.targ.ft!()(S _param_0)` is not callable using argument types `(S)`
fail_compilation/bug9631.d(106): cannot pass argument `x` of type `bug9631.S` to parameter `bug9631.tem!().S _param_0`
fail_compilation/bug9631.d(107): Error: template `bug9631.targ.ft` cannot deduce function from argument types `!()(S)`, candidates are:
fail_compilation/bug9631.d(105): `ft()(tem!().S)`
Expand Down
2 changes: 1 addition & 1 deletion test/fail_compilation/depmsg.d
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ fail_compilation/depmsg.d(44): Deprecation: enum `depmsg.main.Inner.E` is deprec
fail_compilation/depmsg.d(44): Deprecation: enum `depmsg.main.Inner.E` is deprecated - With message!
fail_compilation/depmsg.d(46): Deprecation: alias `depmsg.main.Inner.G` is deprecated - With message!
fail_compilation/depmsg.d(47): Deprecation: variable `depmsg.main.Inner.H` is deprecated - With message!
fail_compilation/depmsg.d(48): Deprecation: class `depmsg.main.Inner.I!().I` is deprecated - With message!
fail_compilation/depmsg.d(48): Deprecation: class `depmsg.main.Inner.I!()` is deprecated - With message!
---
*/

Expand Down
2 changes: 1 addition & 1 deletion test/fail_compilation/depmsg15815.d
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
/*
TEST_OUTPUT:
---
fail_compilation/depmsg15815.d(23): Deprecation: alias `depmsg15815.Alias!(const(Foo)).Alias` is deprecated - message
fail_compilation/depmsg15815.d(23): Deprecation: alias `depmsg15815.Alias!(const(Foo))` is deprecated - message
Foo
---
*/
Expand Down
8 changes: 4 additions & 4 deletions test/fail_compilation/diag10319.d
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@ TEST_OUTPUT:
fail_compilation/diag10319.d(27): Error: `pure` function `D main` cannot call impure function `diag10319.foo`
fail_compilation/diag10319.d(27): Error: `@safe` function `D main` cannot call `@system` function `diag10319.foo`
fail_compilation/diag10319.d(16): `diag10319.foo` is declared here
fail_compilation/diag10319.d(28): Error: `pure` function `D main` cannot call impure function `diag10319.bar!int.bar`
fail_compilation/diag10319.d(28): Error: `@safe` function `D main` cannot call `@system` function `diag10319.bar!int.bar`
fail_compilation/diag10319.d(18): `diag10319.bar!int.bar` is declared here
fail_compilation/diag10319.d(28): Error: `pure` function `D main` cannot call impure function `diag10319.bar!int`
fail_compilation/diag10319.d(28): Error: `@safe` function `D main` cannot call `@system` function `diag10319.bar!int`
fail_compilation/diag10319.d(18): `diag10319.bar!int` is declared here
fail_compilation/diag10319.d(27): Error: function `diag10319.foo` is not `nothrow`
fail_compilation/diag10319.d(28): Error: function `diag10319.bar!int.bar` is not `nothrow`
fail_compilation/diag10319.d(28): Error: function `diag10319.bar!int` is not `nothrow`
fail_compilation/diag10319.d(25): Error: `nothrow` function `D main` may throw
---
*/
Expand Down
2 changes: 1 addition & 1 deletion test/fail_compilation/diag14875.d
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ fail_compilation/diag14875.d(47): Deprecation: class `diag14875.Dep` is deprecat
fail_compilation/diag14875.d(51): Deprecation: variable `diag14875.depVar` is deprecated
4: Dep
fail_compilation/diag14875.d(58): Deprecation: variable `diag14875.depVar` is deprecated
fail_compilation/diag14875.d(59): Deprecation: variable `diag14875.Vaz!(Dep).Vaz` is deprecated
fail_compilation/diag14875.d(59): Deprecation: variable `diag14875.Vaz!(Dep)` is deprecated
---
*/

Expand Down
2 changes: 1 addition & 1 deletion test/fail_compilation/diag9620.d
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
TEST_OUTPUT:
---
fail_compilation/diag9620.d(18): Error: `pure` function `diag9620.main.bar` cannot call impure function `diag9620.foo1`
fail_compilation/diag9620.d(19): Error: `pure` function `diag9620.main.bar` cannot call impure function `diag9620.foo2!().foo2`
fail_compilation/diag9620.d(19): Error: `pure` function `diag9620.main.bar` cannot call impure function `diag9620.foo2!()`
---
*/

Expand Down
12 changes: 6 additions & 6 deletions test/fail_compilation/disable.d
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@ TEST_OUTPUT:
fail_compilation/disable.d(56): Error: function `disable.DisabledOpAssign.opAssign` cannot be used because it is annotated with `@disable`
fail_compilation/disable.d(59): Error: function `disable.DisabledPostblit.opAssign` cannot be used because it is annotated with `@disable`
fail_compilation/disable.d(62): Error: function `disable.HasDtor.opAssign` cannot be used because it is annotated with `@disable`
fail_compilation/disable.d(66): Error: generated function `disable.Nested!(DisabledOpAssign).Nested.opAssign` cannot be used because it is annotated with `@disable`
fail_compilation/disable.d(69): Error: generated function `disable.Nested!(DisabledPostblit).Nested.opAssign` cannot be used because it is annotated with `@disable`
fail_compilation/disable.d(72): Error: generated function `disable.Nested!(HasDtor).Nested.opAssign` cannot be used because it is annotated with `@disable`
fail_compilation/disable.d(76): Error: generated function `disable.NestedDtor!(DisabledOpAssign).NestedDtor.opAssign` cannot be used because it is annotated with `@disable`
fail_compilation/disable.d(79): Error: generated function `disable.NestedDtor!(DisabledPostblit).NestedDtor.opAssign` cannot be used because it is annotated with `@disable`
fail_compilation/disable.d(82): Error: generated function `disable.NestedDtor!(HasDtor).NestedDtor.opAssign` cannot be used because it is annotated with `@disable`
fail_compilation/disable.d(66): Error: generated function `disable.Nested!(DisabledOpAssign).opAssign` cannot be used because it is annotated with `@disable`
fail_compilation/disable.d(69): Error: generated function `disable.Nested!(DisabledPostblit).opAssign` cannot be used because it is annotated with `@disable`
fail_compilation/disable.d(72): Error: generated function `disable.Nested!(HasDtor).opAssign` cannot be used because it is annotated with `@disable`
fail_compilation/disable.d(76): Error: generated function `disable.NestedDtor!(DisabledOpAssign).opAssign` cannot be used because it is annotated with `@disable`
fail_compilation/disable.d(79): Error: generated function `disable.NestedDtor!(DisabledPostblit).opAssign` cannot be used because it is annotated with `@disable`
fail_compilation/disable.d(82): Error: generated function `disable.NestedDtor!(HasDtor).opAssign` cannot be used because it is annotated with `@disable`
fail_compilation/disable.d(84): Error: enum member `disable.Enum1.value` cannot be used because it is annotated with `@disable`
---
*/
Expand Down
2 changes: 1 addition & 1 deletion test/fail_compilation/fail104.d
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
TEST_OUTPUT:
---
fail_compilation/fail104.d(26): Error: template instance `P!()` `P` is not a template declaration, it is a alias
fail_compilation/fail104.d(26): Error: mixin `fail104.C!(S).C.T!()` is not defined
fail_compilation/fail104.d(26): Error: mixin `fail104.C!(S).T!()` is not defined
fail_compilation/fail104.d(31): Error: template instance `fail104.C!(S)` error instantiating
---
*/
Expand Down
2 changes: 1 addition & 1 deletion test/fail_compilation/fail11375.d
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/*
TEST_OUTPUT:
---
fail_compilation/fail11375.d(17): Error: constructor `fail11375.D!().D.this` is not `nothrow`
fail_compilation/fail11375.d(17): Error: constructor `fail11375.D!().this` is not `nothrow`
fail_compilation/fail11375.d(15): Error: `nothrow` function `D main` may throw
---
*/
Expand Down
2 changes: 1 addition & 1 deletion test/fail_compilation/fail11720.d
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
/*
TEST_OUTPUT:
---
fail_compilation/fail11720.d(23): Error: declaration `fail11720.foo!().foo.temp` is already defined in another scope in `foo` at line `23`
fail_compilation/fail11720.d(23): Error: declaration `fail11720.foo!().temp` is already defined in another scope in `foo` at line `23`
fail_compilation/fail11720.d(13): Error: template instance `fail11720.foo!()` error instantiating
fail_compilation/fail11720.d(31): Error: declaration `fail11720.bar.temp` is already defined in another scope in `bar` at line `31`
---
Expand Down
8 changes: 4 additions & 4 deletions test/fail_compilation/fail13120.d
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@ void g1(char[] s) pure @nogc
/*
TEST_OUTPUT:
---
fail_compilation/fail13120.d(35): Error: `pure` function `fail13120.h2` cannot call impure function `fail13120.g2!().g2`
fail_compilation/fail13120.d(35): Error: `@safe` function `fail13120.h2` cannot call `@system` function `fail13120.g2!().g2`
fail_compilation/fail13120.d(27): `fail13120.g2!().g2` is declared here
fail_compilation/fail13120.d(35): Error: `@nogc` function `fail13120.h2` cannot call non-@nogc function `fail13120.g2!().g2`
fail_compilation/fail13120.d(35): Error: `pure` function `fail13120.h2` cannot call impure function `fail13120.g2!()`
fail_compilation/fail13120.d(35): Error: `@safe` function `fail13120.h2` cannot call `@system` function `fail13120.g2!()`
fail_compilation/fail13120.d(27): `fail13120.g2!()` is declared here
fail_compilation/fail13120.d(35): Error: `@nogc` function `fail13120.h2` cannot call non-@nogc function `fail13120.g2!()`
---
*/
void f2() {}
Expand Down
2 changes: 1 addition & 1 deletion test/fail_compilation/fail17.d
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
TEST_OUTPUT:
---
fail_compilation/fail17.d(11): Error: undefined identifier `B`
fail_compilation/fail17.d(11): Error: mixin `fail17.A!int.A.B!(T, A!T)` is not defined
fail_compilation/fail17.d(11): Error: mixin `fail17.A!int.B!(T, A!T)` is not defined
fail_compilation/fail17.d(14): Error: template instance `fail17.A!int` error instantiating
---
*/
Expand Down
2 changes: 1 addition & 1 deletion test/fail_compilation/fail17646.d
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ PERMUTE_ARGS:
TEST_OUTPUT:
---
fail_compilation/imports/fail17646.d(10): Error: found `}` instead of statement
fail_compilation/imports/fail17646.d(7): Error: function `imports.fail17646.allTestData!"".allTestData` has no `return` statement, but is expected to return a value of type `const(TestData)[]`
fail_compilation/imports/fail17646.d(7): Error: function `imports.fail17646.allTestData!""` has no `return` statement, but is expected to return a value of type `const(TestData)[]`
fail_compilation/fail17646.d(16): Error: template instance `imports.fail17646.allTestData!""` error instantiating
fail_compilation/fail17646.d(19): instantiated from here: `runTests!""`
---
Expand Down
4 changes: 2 additions & 2 deletions test/fail_compilation/fail17955.d
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ fail_compilation/fail17955.d(32): instantiated from here: `indicesOf!(isR
fail_compilation/fail17955.d(67): instantiated from here: `RedisStripped!(User, true)`
fail_compilation/fail17955.d(93): Error: need `this` for `fromISOExtString` of type `pure nothrow @nogc @safe immutable(SimpleTimeZone)(dstring _param_0)`
fail_compilation/fail17955.d(95): Error: undefined identifier `DateTimeException`
fail_compilation/fail17955.d(25): Error: variable `fail17955.isISOExtStringSerializable!(SysTime).isISOExtStringSerializable` type `void` is inferred from initializer `fromISOExtString("")`, and variables cannot be of type `void`
fail_compilation/fail17955.d(54): Error: function `fail17955.toRedis!(SysTime).toRedis` has no `return` statement, but is expected to return a value of type `string`
fail_compilation/fail17955.d(25): Error: variable `fail17955.isISOExtStringSerializable!(SysTime)` type `void` is inferred from initializer `fromISOExtString("")`, and variables cannot be of type `void`
fail_compilation/fail17955.d(54): Error: function `fail17955.toRedis!(SysTime)` has no `return` statement, but is expected to return a value of type `string`
---
*/

Expand Down
2 changes: 1 addition & 1 deletion test/fail_compilation/fail17969.d
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/* TEST_OUTPUT:
---
fail_compilation/fail17969.d(9): Error: no property `sum` for type `fail17969.__lambda6!(int[]).__lambda6.MapResult2!((b) => b)`
fail_compilation/fail17969.d(9): Error: no property `sum` for type `fail17969.__lambda6!(int[]).MapResult2!((b) => b)`
---
* https://issues.dlang.org/show_bug.cgi?id=17969
*/
Expand Down
4 changes: 2 additions & 2 deletions test/fail_compilation/fail18093.d
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/* TEST_OUTPUT:
---
fail_compilation/fail18093.d(19): Error: function `void fail18093.GenericTransitiveVisitor!(ASTCodegen).GenericTransitiveVisitor.ParseVisitMethods!(ASTCodegen).visit()` does not override any function, did you mean to override `extern (C++) void fail18093.ParseTimeVisitor!(ASTCodegen).ParseTimeVisitor.visit()`?
fail_compilation/fail18093.d(24): Error: mixin `fail18093.GenericTransitiveVisitor!(ASTCodegen).GenericTransitiveVisitor.ParseVisitMethods!(ASTCodegen)` error instantiating
fail_compilation/fail18093.d(19): Error: function `void fail18093.GenericTransitiveVisitor!(ASTCodegen).ParseVisitMethods!(ASTCodegen).visit()` does not override any function, did you mean to override `extern (C++) void fail18093.ParseTimeVisitor!(ASTCodegen).visit()`?
fail_compilation/fail18093.d(24): Error: mixin `fail18093.GenericTransitiveVisitor!(ASTCodegen).ParseVisitMethods!(ASTCodegen)` error instantiating
fail_compilation/fail18093.d(27): Error: template instance `fail18093.GenericTransitiveVisitor!(ASTCodegen)` error instantiating
---
* https://issues.dlang.org/show_bug.cgi?id=18093
Expand Down
2 changes: 1 addition & 1 deletion test/fail_compilation/fail19202.d
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
/*
TEST_OUTPUT:
---
fail_compilation/fail19202.d(11): Deprecation: variable `fail19202.X!().X` is deprecated
fail_compilation/fail19202.d(11): Deprecation: variable `fail19202.X!()` is deprecated
---
*/

Expand Down
2 changes: 1 addition & 1 deletion test/fail_compilation/fail20551.d
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
TEST_OUTPUT:
---
fail_compilation/fail20551.d(15): Error: cannot take address of lazy parameter `e` in `@safe` function `opAssign`
fail_compilation/fail20551.d(26): Error: template instance `fail20551.LazyStore!int.LazyStore.opAssign!int` error instantiating
fail_compilation/fail20551.d(26): Error: template instance `fail20551.LazyStore!int.opAssign!int` error instantiating
---
*/

Expand Down
2 changes: 1 addition & 1 deletion test/fail_compilation/fail270.d
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
TEST_OUTPUT:
---
fail_compilation/fail270.d(12): Error: string slice `[1 .. 0]` is out of bounds
fail_compilation/fail270.d(12): Error: mixin `fail270.Tuple!int.Tuple.Tuple!()` error instantiating
fail_compilation/fail270.d(12): Error: mixin `fail270.Tuple!int.Tuple!()` error instantiating
fail_compilation/fail270.d(14): Error: mixin `fail270.Tuple!int` error instantiating
---
*/
Expand Down
2 changes: 1 addition & 1 deletion test/fail_compilation/fail272.d
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/*
TEST_OUTPUT:
---
fail_compilation/fail272.d(9): Error: circular reference to variable `fail272.Ins!(Ins).Ins`
fail_compilation/fail272.d(9): Error: circular reference to variable `fail272.Ins!(Ins)`
fail_compilation/fail272.d(10): Error: template instance `fail272.Ins!(Ins)` error instantiating
---
*/
Expand Down
4 changes: 2 additions & 2 deletions test/fail_compilation/fail344.d
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ fail_compilation/fail344.d(20): Error: undefined identifier `Q`
fail_compilation/fail344.d(20): Error: undefined identifier `Q`
fail_compilation/fail344.d(20): Error: undefined identifier `V`
fail_compilation/fail344.d(23): while evaluating: `static assert(Alike!(SIB!(crayon)))`
fail_compilation/fail344.d(23): Error: template instance `fail344.SIB!(crayon).SIB.Alike!(SIB!(crayon))` error instantiating
fail_compilation/fail344.d(23): Error: template instance `fail344.SIB!(crayon).Alike!(SIB!(crayon))` error instantiating
fail_compilation/fail344.d(23): while evaluating: `static assert(Alike!(SIB!(crayon)))`
fail_compilation/fail344.d(28): Error: template instance `fail344.SIB!(crayon).SIB.opDispatch!"E"` error instantiating
fail_compilation/fail344.d(28): Error: template instance `fail344.SIB!(crayon).opDispatch!"E"` error instantiating
---
*/

Expand Down
2 changes: 1 addition & 1 deletion test/fail_compilation/fail346.d
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
TEST_OUTPUT:
---
fail_compilation/fail346.d(15): Error: undefined identifier `P`
fail_compilation/fail346.d(15): Error: variable `fail346.S.T!0.T` cannot use template to add field to aggregate `S`
fail_compilation/fail346.d(15): Error: variable `fail346.S.T!0` cannot use template to add field to aggregate `S`
fail_compilation/fail346.d(20): Error: template instance `fail346.S.T!0` error instantiating
fail_compilation/fail346.d(23): instantiated from here: `V!(S, 0)`
---
Expand Down
2 changes: 1 addition & 1 deletion test/fail_compilation/fail3882.d
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
/*
TEST_OUTPUT:
---
fail_compilation/fail3882.d(23): Warning: calling fail3882.strictlyPure!int.strictlyPure without side effects discards return value of type int, prepend a cast(void) if intentional
fail_compilation/fail3882.d(23): Warning: calling fail3882.strictlyPure!int without side effects discards return value of type int, prepend a cast(void) if intentional
fail_compilation/fail3882.d(27): Warning: calling fp without side effects discards return value of type int, prepend a cast(void) if intentional
---
*/
Expand Down
2 changes: 1 addition & 1 deletion test/fail_compilation/fail6968.d
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ TEST_OUTPUT:
---
fail_compilation/fail6968.d(26): Error: cannot pass type `int` as a function argument
fail_compilation/fail6968.d(26): Error: cannot pass type `long` as a function argument
fail_compilation/fail6968.d(26): Error: circular initialization of variable `fail6968.PredAny!(int, long, float).PredAny`
fail_compilation/fail6968.d(26): Error: circular initialization of variable `fail6968.PredAny!(int, long, float)`
fail_compilation/fail6968.d(31): Error: template instance `fail6968.PredAny!(int, long, float)` error instantiating
fail_compilation/fail6968.d(31): while evaluating `pragma(msg, PredAny!(int, long, float))`
---
Expand Down