diff options
author | Paul Phillips <paulp@improving.org> | 2012-02-17 13:57:06 -0800 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2012-02-17 15:26:00 -0800 |
commit | 0288a0788ae1ffbe9064992f1ac02f647bb64c17 (patch) | |
tree | 90daaee72dd44da92286310e23a99ff829298581 /src/compiler | |
parent | a77d90b893593a2e2675110bde16e393cc2d0329 (diff) | |
download | scala-0288a0788ae1ffbe9064992f1ac02f647bb64c17.tar.gz scala-0288a0788ae1ffbe9064992f1ac02f647bb64c17.tar.bz2 scala-0288a0788ae1ffbe9064992f1ac02f647bb64c17.zip |
Fix for "type _$1 defined twice".
Actually not a fix, only a workaround. Package objects strike
again: you don't want to have existentials in there, like this:
private val resolverFunction: PartialFunction[Throwable, Try[_]] = ...
There are a few irrelevant-to-that-bug changes included which I
did while debugging and figured I'd keep them. With this patch I
can merge/am merging the scala.concurrent work.
Diffstat (limited to 'src/compiler')
-rw-r--r-- | src/compiler/scala/tools/nsc/ast/parser/Parsers.scala | 2 | ||||
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/Typers.scala | 4 |
2 files changed, 5 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala b/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala index fe6dcc9138..e3a59058a3 100644 --- a/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala +++ b/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala @@ -1205,7 +1205,7 @@ self => */ def wildcardType(start: Int) = { val pname = freshTypeName("_$") - val t = atPos(start) { Ident(pname) } + val t = atPos(start)(Ident(pname)) val bounds = typeBounds() val param = atPos(t.pos union bounds.pos) { makeSyntheticTypeParam(pname, bounds) } placeholderTypes = param :: placeholderTypes diff --git a/src/compiler/scala/tools/nsc/typechecker/Typers.scala b/src/compiler/scala/tools/nsc/typechecker/Typers.scala index 23fc30b9fb..e7cd139ce0 100644 --- a/src/compiler/scala/tools/nsc/typechecker/Typers.scala +++ b/src/compiler/scala/tools/nsc/typechecker/Typers.scala @@ -2169,6 +2169,10 @@ trait Typers extends Modes with Adaptations with PatMatVirtualiser { // error for this is issued in RefChecks.checkDefaultsInOverloaded if (!e.sym.isErroneous && !e1.sym.isErroneous && !e.sym.hasDefaultFlag && !e.sym.hasAnnotation(BridgeClass) && !e1.sym.hasAnnotation(BridgeClass)) { + log("Double definition detected:\n " + + ((e.sym.getClass, e.sym.info, e.sym.ownerChain)) + "\n " + + ((e1.sym.getClass, e1.sym.info, e1.sym.ownerChain))) + DefDefinedTwiceError(e.sym, e1.sym) scope.unlink(e1) // need to unlink to avoid later problems with lub; see #2779 } |