diff options
author | Clemens Winter <clemenswinter1@gmail.com> | 2016-08-12 12:16:15 +0200 |
---|---|---|
committer | Clemens Winter <clemenswinter1@gmail.com> | 2016-08-15 10:12:09 +0200 |
commit | b0298945ddbea26ef00099dc37db5e396af94de4 (patch) | |
tree | 27729cdcbe652561797ffae9a06c092c99eacd4f /src/dotty | |
parent | 62348dea92476f1bbb9d7f163f168be9c7e189b5 (diff) | |
download | dotty-b0298945ddbea26ef00099dc37db5e396af94de4.tar.gz dotty-b0298945ddbea26ef00099dc37db5e396af94de4.tar.bz2 dotty-b0298945ddbea26ef00099dc37db5e396af94de4.zip |
Fix #1443: Replace toplevel TypeBounds with Any
Diffstat (limited to 'src/dotty')
-rw-r--r-- | src/dotty/tools/dotc/ast/untpd.scala | 1 | ||||
-rw-r--r-- | src/dotty/tools/dotc/parsing/Parsers.scala | 11 |
2 files changed, 9 insertions, 3 deletions
diff --git a/src/dotty/tools/dotc/ast/untpd.scala b/src/dotty/tools/dotc/ast/untpd.scala index 8400e9352..cef78c6e6 100644 --- a/src/dotty/tools/dotc/ast/untpd.scala +++ b/src/dotty/tools/dotc/ast/untpd.scala @@ -205,6 +205,7 @@ object untpd extends Trees.Instance[Untyped] with UntypedTreeInfo { def rootDot(name: Name) = Select(Ident(nme.ROOTPKG), name) def scalaDot(name: Name) = Select(rootDot(nme.scala_), name) def scalaUnit = scalaDot(tpnme.Unit) + def scalaAny = scalaDot(tpnme.Any) def makeConstructor(tparams: List[TypeDef], vparamss: List[List[ValDef]], rhs: Tree = EmptyTree)(implicit ctx: Context): DefDef = DefDef(nme.CONSTRUCTOR, tparams, vparamss, TypeTree(), rhs) diff --git a/src/dotty/tools/dotc/parsing/Parsers.scala b/src/dotty/tools/dotc/parsing/Parsers.scala index 12f629c57..edc9d3f66 100644 --- a/src/dotty/tools/dotc/parsing/Parsers.scala +++ b/src/dotty/tools/dotc/parsing/Parsers.scala @@ -648,12 +648,17 @@ object Parsers { } /* ------------- TYPES ------------------------------------------------------ */ - /** Same as [[typ]], but emits a syntax error if it returns a wildcard. + /** Same as [[typ]], but if this results in a wildcard it emits a syntax error and + * returns a tree for type `Any` instead. */ def toplevelTyp(): Tree = { val t = typ() - for (wildcardPos <- findWildcardType(t)) syntaxError("unbound wildcard type", wildcardPos) - t + findWildcardType(t) match { + case Some(wildcardPos) => + syntaxError("unbound wildcard type", wildcardPos) + scalaAny + case None => t + } } /** Type ::= FunArgTypes `=>' Type |