Bug 8668 – public selective import makes functions conflict when otherwise they don't

Status
RESOLVED
Resolution
FIXED
Severity
normal
Priority
P2
Component
dmd
Product
D
Version
D2
Platform
All
OS
All
Creation time
2012-09-16T06:19:00Z
Last change time
2013-03-03T22:38:09Z
Keywords
pull, rejects-valid, TDPL
Assigned to
nobody
Creator
dmitry.olsh

Comments

Comment #0 by dmitry.olsh — 2012-09-16T06:19:29Z
Selective import is quite rotten. Continuing where I left with 8667 I've found another issue now with public selective import: Again given a few simple modules: module m; void split(T)(T k) if(is(T : string)) { } module m2; void split(T)(T k) if(is(T : int)) { } //drop in another one to pull split from m2 module m3; public import m2: split; //and the one to call them... import m; import m3; //replace with m2 to make it work void main(){ split("abc"); split(123); } Compiling this all together yeilds an output that suggest that 2 templates are in conflict: tryit.d(5): Error: m.split(T) if (is(T : string)) at m.d(3) conflicts with m3.sp lit at m3.d(3) tryit.d(6): Error: template m.split does not match any function template declara tion tryit.d(6): Error: template m.split(T) if (is(T : string)) cannot deduce templat e function from argument types !()(int) DMD 2.060 been there since at least 2.056.
Comment #1 by k.hara.pg — 2013-01-08T18:26:04Z
Comment #2 by k.hara.pg — 2013-01-08T18:27:01Z
*** Issue 8035 has been marked as a duplicate of this issue. ***
Comment #3 by k.hara.pg — 2013-01-08T18:31:41Z
From bug 8035: ---- import std.regex, std.string; void main() { split(s"hello", regex("[ \t,.;:?]+")); } ---- This is a TDPL issue at p.18 (http://erdani.com/tdpl/errata/).
Comment #4 by github-bugzilla — 2013-03-03T22:05:43Z
Commits pushed to master at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/b35e7e0b7f2df76869a79c032a48ab641b18ff85 fix Issue 8668 - public selective import makes functions conflict when otherwise they don't https://github.com/D-Programming-Language/dmd/commit/e2df8c552a92ecc6f722a50de5a043fa94bdd69e Merge pull request #1449 from 9rnsr/fix8668 Issue 8668 - public selective import makes functions conflict when otherwise they don't