Skip to content
Permalink
Browse files

SI-4831 Fix ambiguous import detection for renamed imports.

  • Loading branch information
retronym committed Jun 9, 2012
1 parent 43ae825 commit 666bbe730aa647a8476a33ca79beba671b80b3d2
@@ -4575,17 +4575,17 @@ trait Typers extends Modes with Adaptations with Tags {
qual = atPos(tree.pos.focusStart)(gen.mkAttributedQualifier(pre))
} else {
if (impSym.exists) {
var impSym1 = NoSymbol
var impSym1: Symbol = NoSymbol
var imports1 = imports.tail
def ambiguousImport() = {
if (!(imports.head.qual.tpe =:= imports1.head.qual.tpe))
if (!(imports.head.qual.tpe =:= imports1.head.qual.tpe && impSym == impSym1))
ambiguousError(
"it is imported twice in the same scope by\n"+imports.head + "\nand "+imports1.head)
}
while (errorContainer == null && !imports1.isEmpty &&
(!imports.head.isExplicitImport(name) ||
imports1.head.depth == imports.head.depth)) {
var impSym1 = imports1.head.importedSymbol(name)
impSym1 = imports1.head.importedSymbol(name)
if (reallyExists(impSym1)) {
if (imports1.head.isExplicitImport(name)) {
if (imports.head.isExplicitImport(name) ||
@@ -0,0 +1,7 @@
t4831.scala:10: error: reference to b is ambiguous;
it is imported twice in the same scope by
import O.b
and import O.{a=>b}
println(b)
^
one error found
@@ -0,0 +1,11 @@
object O {
val a = 0
val b = 1
}

import O.{a => b}
import O.b

object test {
println(b)
}
@@ -0,0 +1,11 @@
object O {
val a = 0
}


object test {
val O1: O.type = O
val O2: O.type = O
import O1.a, O2.a
println(a)
}

0 comments on commit 666bbe7

Please sign in to comment.
You can’t perform that action at this time.