diff options
author | Adriaan Moors <adriaan.moors@epfl.ch> | 2009-08-06 17:11:35 +0000 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@epfl.ch> | 2009-08-06 17:11:35 +0000 |
commit | acdf9452c9932d2b07d3eb907542b705fbda1c28 (patch) | |
tree | a910e5d9d797bbc68fa90288f42a0a9bdd951ca7 | |
parent | 381209889a348349f97e414485d5fcf3c8e8931d (diff) | |
download | scala-acdf9452c9932d2b07d3eb907542b705fbda1c28.tar.gz scala-acdf9452c9932d2b07d3eb907542b705fbda1c28.tar.bz2 scala-acdf9452c9932d2b07d3eb907542b705fbda1c28.zip |
Revert "fixed #2208"
This reverts commit 2d437f2a62d7127abe907d61118ea448c9ad6c59.
-rw-r--r-- | src/compiler/scala/tools/nsc/symtab/Types.scala | 2 | ||||
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/Typers.scala | 8 | ||||
-rw-r--r-- | test/files/neg/ticket2208.check | 4 | ||||
-rw-r--r-- | test/files/neg/ticket2208.scala | 8 | ||||
-rw-r--r-- | test/files/pos/ticket2208.scala | 8 |
5 files changed, 2 insertions, 28 deletions
diff --git a/src/compiler/scala/tools/nsc/symtab/Types.scala b/src/compiler/scala/tools/nsc/symtab/Types.scala index 28ca47e6a3..5375f77569 100644 --- a/src/compiler/scala/tools/nsc/symtab/Types.scala +++ b/src/compiler/scala/tools/nsc/symtab/Types.scala @@ -1511,8 +1511,6 @@ A type's typeSymbol should never be inspected directly. PolyType(typeParams, typeRef(pre, sym.initialize, higherKindedArgs)) } else if (sym.isRefinementClass) { sym.info.normalize // @MO to AM: OK? - //@M I think this is okay, but changeset 12414 (which fixed #1241) re-introduced another bug (#2208) - // see typedTypeConstructor in Typers } else { super.normalize } diff --git a/src/compiler/scala/tools/nsc/typechecker/Typers.scala b/src/compiler/scala/tools/nsc/typechecker/Typers.scala index f4f73cc1b3..8056c2794e 100644 --- a/src/compiler/scala/tools/nsc/typechecker/Typers.scala +++ b/src/compiler/scala/tools/nsc/typechecker/Typers.scala @@ -3857,15 +3857,11 @@ trait Typers { self: Analyzer => /** Types a type constructor tree used in a new or supertype */ def typedTypeConstructor(tree: Tree, mode: Int): Tree = { val result = typed(tree, typeMode(mode) | FUNmode, WildcardType) - - val restpe = result.tpe.normalize // normalize to get rid of type aliases for the following check (#1241) + val restpe = result.tpe.normalize if (!phase.erasedTypes && restpe.isInstanceOf[TypeRef] && !restpe.prefix.isStable) { error(tree.pos, restpe.prefix+" is not a legal prefix for a constructor") } - - // @M: during uncurry, all types are normalized (after refchecks and before genicode) - result // must not normalize before refchecks, and thus must not do `result setType(restpe)` - // the original type must be ref-checked first, so that bounds of type args of type aliases are checked (see #2208) + result setType restpe // @M: normalization is done during erasure } def typedTypeConstructor(tree: Tree): Tree = typedTypeConstructor(tree, NOmode) diff --git a/test/files/neg/ticket2208.check b/test/files/neg/ticket2208.check deleted file mode 100644 index 9aa6658bf4..0000000000 --- a/test/files/neg/ticket2208.check +++ /dev/null @@ -1,4 +0,0 @@ -ticket2208.scala:9: error: type arguments [Any] do not conform to type Alias's type parameter bounds [X <: Test.A] - class C extends Alias[Any] // not ok, normalisation should check bounds before expanding Alias - ^ -one error found
\ No newline at end of file diff --git a/test/files/neg/ticket2208.scala b/test/files/neg/ticket2208.scala deleted file mode 100644 index 43bb0adec5..0000000000 --- a/test/files/neg/ticket2208.scala +++ /dev/null @@ -1,8 +0,0 @@ -object Test { - class A - - class B[X] - type Alias[X <: A] = B[X] - - class C extends Alias[Any] // not ok, normalisation should check bounds before expanding Alias -}
\ No newline at end of file diff --git a/test/files/pos/ticket2208.scala b/test/files/pos/ticket2208.scala deleted file mode 100644 index f1a521b14c..0000000000 --- a/test/files/pos/ticket2208.scala +++ /dev/null @@ -1,8 +0,0 @@ -object Test { - class A - - class B[X] - type Alias[X <: A] = B[X] - - val foo: B[A] = new Alias[A] // check that type aliases can be instantiated -}
\ No newline at end of file |