diff options
author | Paul Phillips <paulp@improving.org> | 2013-09-18 07:25:59 -0700 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2013-09-18 07:25:59 -0700 |
commit | a8543ef28f8fc0152208f4eef763344657bf9e5a (patch) | |
tree | c82662e321ec6c291edbd51e30ff93bc6d93ce92 /src/reflect | |
parent | d45a3c8cc8e9f1d95d797d548a85abd8597f5bc7 (diff) | |
parent | 0f67e8dddcb8b087560fed90339d9235179dd1ea (diff) | |
download | scala-a8543ef28f8fc0152208f4eef763344657bf9e5a.tar.gz scala-a8543ef28f8fc0152208f4eef763344657bf9e5a.tar.bz2 scala-a8543ef28f8fc0152208f4eef763344657bf9e5a.zip |
Merge pull request #2955 from retronym/ticket/7853
SI-7853 Regression in explicit outer
Diffstat (limited to 'src/reflect')
-rw-r--r-- | src/reflect/scala/reflect/internal/Trees.scala | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/reflect/scala/reflect/internal/Trees.scala b/src/reflect/scala/reflect/internal/Trees.scala index 38f1f0f725..2163a26b84 100644 --- a/src/reflect/scala/reflect/internal/Trees.scala +++ b/src/reflect/scala/reflect/internal/Trees.scala @@ -589,7 +589,11 @@ trait Trees extends api.Trees { self: SymbolTable => object TypeTree extends TypeTreeExtractor def TypeTree(tp: Type): TypeTree = TypeTree() setType tp - def TypeTree(sym: Symbol): TypeTree = atPos(sym.pos.focus)(TypeTree(sym.tpe_*.finalResultType)) + private def TypeTreeMemberType(sym: Symbol): TypeTree = { + // Needed for pos/t4970*.scala. See SI-7853 + val resType = (sym.owner.thisType memberType sym).finalResultType + atPos(sym.pos.focus)(TypeTree(resType)) + } def TypeBoundsTree(bounds: TypeBounds): TypeBoundsTree = TypeBoundsTree(TypeTree(bounds.lo), TypeTree(bounds.hi)) def TypeBoundsTree(sym: Symbol): TypeBoundsTree = atPos(sym.pos)(TypeBoundsTree(sym.info.bounds)) @@ -1039,7 +1043,7 @@ trait Trees extends api.Trees { self: SymbolTable => def newValDef(sym: Symbol, rhs: Tree)( mods: Modifiers = Modifiers(sym.flags), name: TermName = sym.name.toTermName, - tpt: Tree = TypeTree(sym) + tpt: Tree = TypeTreeMemberType(sym) ): ValDef = ( atPos(sym.pos)(ValDef(mods, name, tpt, rhs)) setSymbol sym ) @@ -1049,7 +1053,7 @@ trait Trees extends api.Trees { self: SymbolTable => name: TermName = sym.name.toTermName, tparams: List[TypeDef] = sym.typeParams map TypeDef, vparamss: List[List[ValDef]] = mapParamss(sym)(ValDef), - tpt: Tree = TypeTree(sym) + tpt: Tree = TypeTreeMemberType(sym) ): DefDef = ( atPos(sym.pos)(DefDef(mods, name, tparams, vparamss, tpt, rhs)) setSymbol sym ) |