Bug 7700 – wrong semantic scope while ordering parameterized specialization

Status
NEW
Severity
normal
Priority
P3
Component
dmd
Product
D
Version
D2
Platform
All
OS
All
Creation time
2012-03-13T05:14:43Z
Last change time
2024-12-13T17:59:09Z
Assigned to
No Owner
Creator
Martin Nowak
Moved to GitHub: dmd#18426 →

Comments

Comment #0 by code — 2012-03-13T05:14:43Z
cat > bug.d << CODE template foo(short lo2, short hi2 : lo) {} template foo(byte lo, byte hi : lo) {} alias foo!(0, 0) foo00; CODE dmd -c bug -------- bug.d(2): Error: undefined identifier lo, did you mean variable lo2? -------- Both templates are match with conversion. During ordering the first template is instantiated with foo!(0, lo) and semantic is run in the wrong scope. It seems that we need to create a scope and run semantic while creating the dummy args.
Comment #1 by code — 2012-03-13T06:42:51Z
cat > bug.d << CODE template foo(short lo2, short hi2 : lo2) {} template foo(byte lo, byte hi : lo) {} alias foo!(0, 0) foo00; CODE dmd -c bug -------- bug.d(4): Error: undefined identifier lo, did you mean variable lo2? bug.d(2): Error: undefined identifier lo2, did you mean variable lo? bug.d(8): Error: template instance foo!(0,0) foo!(0,0) matches more than one template declaration, bug.d(2):foo(short lo2,short hi2 : lo2) and bug.d(4):foo(byte lo,byte hi : lo) -------- There was a typo in the previous code example.
Comment #2 by robert.schadek — 2024-12-13T17:59:09Z
THIS ISSUE HAS BEEN MOVED TO GITHUB https://github.com/dlang/dmd/issues/18426 DO NOT COMMENT HERE ANYMORE, NOBODY WILL SEE IT, THIS ISSUE HAS BEEN MOVED TO GITHUB