diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/compiler/scala/tools/nsc/symtab/IdeSupport.scala | 2 | ||||
-rw-r--r-- | src/compiler/scala/tools/nsc/symtab/SymbolWalker.scala | 15 |
2 files changed, 15 insertions, 2 deletions
diff --git a/src/compiler/scala/tools/nsc/symtab/IdeSupport.scala b/src/compiler/scala/tools/nsc/symtab/IdeSupport.scala index dd9c529531..097e57950b 100644 --- a/src/compiler/scala/tools/nsc/symtab/IdeSupport.scala +++ b/src/compiler/scala/tools/nsc/symtab/IdeSupport.scala @@ -319,7 +319,7 @@ trait IdeSupport extends SymbolTable { // added to global, not analyzers. finish(existing) } - assert(symbol != NoSymbol) + if (symbol == NoSymbol) return symbol // catch double defs. record(currentClient, symbol.name) val i = reuseMap(this).elements diff --git a/src/compiler/scala/tools/nsc/symtab/SymbolWalker.scala b/src/compiler/scala/tools/nsc/symtab/SymbolWalker.scala index 78fd571379..d40bd62c4a 100644 --- a/src/compiler/scala/tools/nsc/symtab/SymbolWalker.scala +++ b/src/compiler/scala/tools/nsc/symtab/SymbolWalker.scala @@ -179,7 +179,20 @@ trait SymbolWalker { dup.tpe = tree.tpe f(dup) } else f(tree.ref) - case tree : CompoundTypeTree => f(tree.templ) + case tree : CompoundTypeTree => + if (tree.tpe.typeSymbol.isRefinementClass) tree.tpe.typeSymbol.info match { + case tpe : RefinedType => + tpe.parents.zip(tree.templ.parents).foreach{ + case (tpe,tree) => + if (tree.hasSymbol && (tree.symbol == NoSymbol || tree.symbol == null)) { + tree.symbol = tpe.typeSymbol + } + } + + case _ => + } + + f(tree.templ) case tree : Template => fs(tree.parents); f(tree.self); fs(tree.body) case tree : SelectFromTypeTree => { if (tree.qualifier.tpe == null) tree.tpe match { |