@@ -24,21 +24,13 @@ import StdNames._
2424
2525/** The first tree transform
2626 * - ensures there are companion objects for all classes except module classes
27- * - eliminates some kinds of trees: Imports, NamedArgs, all TypTrees other than TypeTree
28- * - converts Select/Ident/SelectFromTypeTree nodes that refer to types to TypeTrees.
29- * - inserts `.package` for selections of package object members
30- * - checks the bounds of AppliedTypeTrees
27+ * - eliminates some kinds of trees: Imports, NamedArgs
3128 * - stubs out native methods
32- * - removes java-defined ASTs
3329 */
3430class FirstTransform extends MiniPhaseTransform with IdentityDenotTransformer with AnnotationTransformer { thisTransformer =>
3531 import ast .tpd ._
3632
3733 override def phaseName = " firstTransform"
38-
39- override def runsAfter = Set (classOf [typer.InstChecks ])
40- // This phase makes annotations disappear in types, so InstChecks should
41- // run before so that it can get at all annotations.
4234
4335 def transformInfo (tp : Type , sym : Symbol )(implicit ctx : Context ): Type = tp
4436
@@ -101,10 +93,7 @@ class FirstTransform extends MiniPhaseTransform with IdentityDenotTransformer wi
10193 case stat => stat
10294 }
10395
104- def skipJava (stats : List [Tree ]): List [Tree ] = // packages get a JavaDefined flag. Dont skip them
105- stats.filter(t => ! (t.symbol is(Flags .JavaDefined , Flags .Package )))
106-
107- addMissingCompanions(reorder(skipJava(stats)))
96+ addMissingCompanions(reorder(stats))
10897 }
10998
11099 override def transformDefDef (ddef : DefDef )(implicit ctx : Context , info : TransformerInfo ) = {
@@ -119,47 +108,10 @@ class FirstTransform extends MiniPhaseTransform with IdentityDenotTransformer wi
119108 override def transformStats (trees : List [Tree ])(implicit ctx : Context , info : TransformerInfo ): List [Tree ] =
120109 ast.Trees .flatten(reorderAndComplete(trees)(ctx.withPhase(thisTransformer.next)))
121110
122- private def normalizeType (tree : Tree )(implicit ctx : Context ) =
123- if (tree.isType) TypeTree (tree.tpe).withPos(tree.pos) else tree
124-
125- override def transformIdent (tree : Ident )(implicit ctx : Context , info : TransformerInfo ) = tree.tpe match {
126- case tpe : ThisType =>
127- /*
128- A this reference hide in a self ident, and be subsequently missed
129- when deciding on whether outer accessors are needed and computing outer paths.
130- We do this normalization directly after Typer, because during typer the
131- ident should rest available for hyperlinking.*/
132- This (tpe.cls).withPos(tree.pos)
133- case _ => normalizeType(tree)
134- }
135-
136-
137-
138- override def transformSelect (tree : Select )(implicit ctx : Context , info : TransformerInfo ) =
139- normalizeType {
140- val qual = tree.qualifier
141- qual.symbol.moduleClass.denot match {
142- case pkg : PackageClassDenotation if ! tree.symbol.maybeOwner.is(Package ) =>
143- cpy.Select (tree)(qual select pkg.packageObj.symbol, tree.name)
144- case _ =>
145- tree
146- }
147- }
148-
149- override def transformSelectFromTypeTree (tree : SelectFromTypeTree )(implicit ctx : Context , info : TransformerInfo ) =
150- normalizeType(tree)
151-
152111 override def transformOther (tree : Tree )(implicit ctx : Context , info : TransformerInfo ) = tree match {
153112 case tree : Import => EmptyTree
154113 case tree : NamedArg => transform(tree.arg)
155- case AppliedTypeTree (tycon, args) =>
156- val tparams = tycon.tpe.typeSymbol.typeParams
157- val bounds = tparams.map(tparam =>
158- tparam.info.asSeenFrom(tycon.tpe.normalizedPrefix, tparam.owner.owner).bounds)
159- Checking .checkBounds(args, bounds, _.substDealias(tparams, _))
160- normalizeType(tree)
161- case tree =>
162- normalizeType(tree)
114+ case tree => tree
163115 }
164116
165117 // invariants: all modules have companion objects
0 commit comments