expression.d (dmd-2.094.1) | : | expression.d (dmd-2.094.2) | ||
---|---|---|---|---|
skipping to change at line 3947 | skipping to change at line 3947 | |||
Type t = pto.type; | Type t = pto.type; | |||
if (t.ty == Terror) | if (t.ty == Terror) | |||
return cannotInfer(this, to, flag); | return cannotInfer(this, to, flag); | |||
tiargs.push(t); | tiargs.push(t); | |||
} | } | |||
// Set target of return type inference | // Set target of return type inference | |||
if (!tf.next && tof.next) | if (!tf.next && tof.next) | |||
fd.treq = to; | fd.treq = to; | |||
auto ti = Pool!TemplateInstance.make(loc, td, tiargs); | auto ti = new TemplateInstance(loc, td, tiargs); | |||
Expression ex = (new ScopeExp(loc, ti)).expressionSemantic(td._scope ); | Expression ex = (new ScopeExp(loc, ti)).expressionSemantic(td._scope ); | |||
// Reset inference target for the later re-semantic | // Reset inference target for the later re-semantic | |||
fd.treq = null; | fd.treq = null; | |||
if (ex.op == TOK.error) | if (ex.op == TOK.error) | |||
return MATCH.nomatch; | return MATCH.nomatch; | |||
if (auto ef = ex.isFuncExp()) | if (auto ef = ex.isFuncExp()) | |||
return ef.matchType(to, sc, presult, flag); | return ef.matchType(to, sc, presult, flag); | |||
else | else | |||
skipping to change at line 4875 | skipping to change at line 4875 | |||
* foo.bar!(args) | * foo.bar!(args) | |||
*/ | */ | |||
extern (C++) final class DotTemplateInstanceExp : UnaExp | extern (C++) final class DotTemplateInstanceExp : UnaExp | |||
{ | { | |||
TemplateInstance ti; | TemplateInstance ti; | |||
extern (D) this(const ref Loc loc, Expression e, Identifier name, Objects* t iargs) | extern (D) this(const ref Loc loc, Expression e, Identifier name, Objects* t iargs) | |||
{ | { | |||
super(loc, TOK.dotTemplateInstance, __traits(classInstanceSize, DotTempl ateInstanceExp), e); | super(loc, TOK.dotTemplateInstance, __traits(classInstanceSize, DotTempl ateInstanceExp), e); | |||
//printf("DotTemplateInstanceExp()\n"); | //printf("DotTemplateInstanceExp()\n"); | |||
this.ti = Pool!TemplateInstance.make(loc, name, tiargs); | this.ti = new TemplateInstance(loc, name, tiargs); | |||
} | } | |||
extern (D) this(const ref Loc loc, Expression e, TemplateInstance ti) | extern (D) this(const ref Loc loc, Expression e, TemplateInstance ti) | |||
{ | { | |||
super(loc, TOK.dotTemplateInstance, __traits(classInstanceSize, DotTempl ateInstanceExp), e); | super(loc, TOK.dotTemplateInstance, __traits(classInstanceSize, DotTempl ateInstanceExp), e); | |||
this.ti = ti; | this.ti = ti; | |||
} | } | |||
override Expression syntaxCopy() | override Expression syntaxCopy() | |||
{ | { | |||
End of changes. 2 change blocks. | ||||
2 lines changed or deleted | 2 lines changed or added |