www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 19162] New: [REG: 2.079.0] Public Import Overlapping Names


          Issue ID: 19162
           Summary: [REG: 2.079.0] Public Import Overlapping Names
                    Conflict Resolution
           Product: D
           Version: D2
          Hardware: x86_64
                OS: All
            Status: NEW
          Severity: regression
          Priority: P1
         Component: dmd
          Assignee: nobody puremagic.com
          Reporter: look.at.me.pee.please gmail.com

The following works in 2.078.1 but stopped working in 2.079.0. Seems to be
selecting std.math.abs instead of vec.abs which are both publicly imported in
module 'math'.

/../phobos\std\math.d(564): Error: incompatible types for `(x) >= (0)`:
`Vector!(float, 3)` and `int`
/../phobos\std\math.d(564): Error: `x` is not of arithmetic type, it is a
`Vector!(float, 3)`
\test\main.d(9): Error: template instance `std.math.abs!(Vector!(float, 3))`
error instantiating


// main.d
import math;

void main()
    Vector!(float, 3) v;

    auto t = abs(v);


// vec.d
module vec;

struct Vector(T, int size)
    T x, y, z;

auto abs(T, int size)(auto ref const Vector!(T, size) v)
    return v;


// math.d
module math;

    import std.math; // order doesn't change error
    import vec;


Aug 12 2018