[Issue 15114] New: hijacking and selective imports
    via Digitalmars-d-bugs 
    digitalmars-d-bugs at puremagic.com
       
    Fri Sep 25 03:24:42 PDT 2015
    
    
  
https://issues.dlang.org/show_bug.cgi?id=15114
          Issue ID: 15114
           Summary: hijacking and selective imports
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Severity: normal
          Priority: P1
         Component: dmd
          Assignee: nobody at puremagic.com
          Reporter: john.loughran.colvin at gmail.com
v1:
===
import std.math;
auto sin(float x) { return .sin(x); }
void main() { auto a = sin(3.4f); }
hijack.d(3): Error: forward reference to inferred return type of function call
module hijack.sin(x)
v2:
===
import std.math;
auto sin(float x) { return std.math.sin(x); }
void main() { auto a = sin(3.4f); }
No errors
v3:
===
import std.math : sin;
auto sin(float x) { return std.math.sin(x); }
void main() { auto a = sin(3.4f); }
hijack.d(3): Error: undefined identifier 'std'
v4:
===
import std.math : sin;
auto sin(float x) { return .sin(x); }
void main() { auto a = sin(3.4f); }
hijack.d(3): Error: hijack.sin called with argument types (float) matches both:
/usr/local/Cellar/dmd/2.068.2/include/d2/std/math.d(664):    
std.math.sin(float x)
and:
hijack.d(3):     hijack.sin(float x)
v5:
===
import std.math;
import std.math : sin;
auto sin(float x) { return std.math.sin(x); }
void main() { auto a = sin(3.4f); }
hijack.d(6): Error: hijack.sin called with argument types (float) matches both:
/usr/local/Cellar/dmd/2.068.2/include/d2/std/math.d(664):    
std.math.sin(float x)
and:
hijack.d(4):     hijack.sin(float x)
Comparing v2 and v3:
Why does using a selective import prevent use of the fully qualified name?
Comparing v1 and v4:
Why does using a selective import completely change the error message?
comparing v2 and v5:
Why does adding a selective import trigger a conflict? Why is there not a
conflict in v2?
It seems like either I am totally misunderstanding things or some of these are
bugs.
--
    
    
More information about the Digitalmars-d-bugs
mailing list