@@ -44,18 +44,18 @@ trait Symbols extends api.Symbols { self: SymbolTable =>
4444 }
4545 /** Create a new free variable. Its owner is NoSymbol.
4646 */
47- def newFreeVar (name : TermName , tpe : Type , value : Any , flags : Long = 0L ): FreeVar =
48- new FreeVar (name, value) initFlags flags setInfo tpe
47+ def newFreeVar (name : TermName , tpe : Type , value : Any , newFlags : Long = 0L ): FreeVar =
48+ new FreeVar (name, value) initFlags newFlags setInfo tpe
4949
5050 /** The original owner of a class. Used by the backend to generate
5151 * EnclosingMethod attributes.
5252 */
5353 val originalOwner = perRunCaches.newMap[Symbol , Symbol ]()
5454
5555 abstract class AbsSymbolImpl extends AbsSymbol { this : Symbol =>
56- def newNestedSymbol (name : Name , pos : Position , flags : Long ) = name match {
57- case n : TermName => newTermSymbol(n, pos, flags )
58- case n : TypeName => newTypeSymbol(n, pos, flags )
56+ def newNestedSymbol (name : Name , pos : Position , newFlags : Long ) = name match {
57+ case n : TermName => newTermSymbol(n, pos, newFlags )
58+ case n : TypeName => newTypeSymbol(n, pos, newFlags )
5959 }
6060 def typeSig : Type = info
6161 def typeSigIn (site : Type ): Type = site.memberInfo(this )
@@ -99,24 +99,24 @@ trait Symbols extends api.Symbols { self: SymbolTable =>
9999
100100// ------ creators -------------------------------------------------------------------
101101
102- final def newValue (name : TermName , pos : Position = NoPosition , flags : Long = 0L ): TermSymbol =
103- newTermSymbol(name, pos, flags )
104- final def newVariable (name : TermName , pos : Position = NoPosition , flags : Long = 0L ): TermSymbol =
105- newTermSymbol(name, pos, MUTABLE | flags )
106- final def newValueParameter (name : TermName , pos : Position = NoPosition , flags : Long = 0L ): TermSymbol =
107- newTermSymbol(name, pos, PARAM | flags )
102+ final def newValue (name : TermName , pos : Position = NoPosition , newFlags : Long = 0L ): TermSymbol =
103+ newTermSymbol(name, pos, newFlags )
104+ final def newVariable (name : TermName , pos : Position = NoPosition , newFlags : Long = 0L ): TermSymbol =
105+ newTermSymbol(name, pos, MUTABLE | newFlags )
106+ final def newValueParameter (name : TermName , pos : Position = NoPosition , newFlags : Long = 0L ): TermSymbol =
107+ newTermSymbol(name, pos, PARAM | newFlags )
108108
109109 /** Create local dummy for template (owner of local blocks) */
110110 final def newLocalDummy (pos : Position ) =
111111 newTermSymbol(nme.localDummyName(this ), pos) setInfo NoType
112- final def newMethod (name : TermName , pos : Position = NoPosition , flags : Long = 0L ): MethodSymbol =
113- newMethodSymbol(name, pos, METHOD | flags )
112+ final def newMethod (name : TermName , pos : Position = NoPosition , newFlags : Long = 0L ): MethodSymbol =
113+ newMethodSymbol(name, pos, METHOD | newFlags )
114114 final def newLabel (name : TermName , pos : Position = NoPosition ): MethodSymbol =
115115 newMethod(name, pos, LABEL )
116116
117117 /** Propagates ConstrFlags (JAVA, specifically) from owner to constructor. */
118- final def newConstructor (pos : Position , flags : Long = 0L ) =
119- newMethod(nme.CONSTRUCTOR , pos, getFlag(ConstrFlags ) | flags )
118+ final def newConstructor (pos : Position , newFlags : Long = 0L ) =
119+ newMethod(nme.CONSTRUCTOR , pos, getFlag(ConstrFlags ) | newFlags )
120120
121121 /** Static constructor with info set. */
122122 def newStaticConstructor (pos : Position ) =
@@ -131,19 +131,19 @@ trait Symbols extends api.Symbols { self: SymbolTable =>
131131 if (isPackage || ! settings.overrideObjects.value) MODULE | FINAL
132132 else MODULE
133133 )
134- def newLinkedModule (clazz : Symbol , flags : Long = 0L ): ModuleSymbol = {
135- val m = newModuleSymbol(clazz.name.toTermName, clazz.pos, ModuleFlags | flags )
134+ def newLinkedModule (clazz : Symbol , newFlags : Long = 0L ): ModuleSymbol = {
135+ val m = newModuleSymbol(clazz.name.toTermName, clazz.pos, ModuleFlags | newFlags )
136136 connectModuleToClass(m, clazz.asInstanceOf [ClassSymbol ])
137137 }
138- final def newModule (name : TermName , pos : Position = NoPosition , flags : Long = 0L ): ModuleSymbol = {
139- val m = newModuleSymbol(name, pos, flags | ModuleFlags )
138+ final def newModule (name : TermName , pos : Position = NoPosition , newFlags : Long = 0L ): ModuleSymbol = {
139+ val m = newModuleSymbol(name, pos, newFlags | ModuleFlags )
140140 val clazz = newModuleClassSymbol(name.toTypeName, pos, (m getFlag ModuleToClassFlags ) | MODULE )
141141 connectModuleToClass(m, clazz)
142142 }
143143
144- final def newPackage (name : TermName , pos : Position = NoPosition , flags : Long = 0L ): ModuleSymbol = {
144+ final def newPackage (name : TermName , pos : Position = NoPosition , newFlags : Long = 0L ): ModuleSymbol = {
145145 assert(name == nme.ROOT || isPackageClass, this )
146- newModule(name, pos, JAVA | PACKAGE | flags )
146+ newModule(name, pos, JAVA | PACKAGE | newFlags )
147147 }
148148 final def newThisSym (pos : Position ) =
149149 newTermSymbol(nme.this_, pos, SYNTHETIC )
@@ -153,41 +153,41 @@ trait Symbols extends api.Symbols { self: SymbolTable =>
153153 /** Direct symbol factories.
154154 * For internal use; these are unlikely to be what you want.
155155 */
156- def newTermSymbol (name : TermName , pos : Position = NoPosition , flags : Long = 0L ): TermSymbol =
157- new TermSymbol (this , pos, name) initFlags flags
156+ def newTermSymbol (name : TermName , pos : Position = NoPosition , newFlags : Long = 0L ): TermSymbol =
157+ new TermSymbol (this , pos, name) initFlags newFlags
158158
159- def newAbstractTypeSymbol (name : TypeName , pos : Position = NoPosition , flags : Long = 0L ): AbstractTypeSymbol =
160- new AbstractTypeSymbol (this , pos, name) initFlags flags
159+ def newAbstractTypeSymbol (name : TypeName , pos : Position = NoPosition , newFlags : Long = 0L ): AbstractTypeSymbol =
160+ new AbstractTypeSymbol (this , pos, name) initFlags newFlags
161161
162- def newAliasTypeSymbol (name : TypeName , pos : Position = NoPosition , flags : Long = 0L ): AliasTypeSymbol =
163- new AliasTypeSymbol (this , pos, name) initFlags flags
162+ def newAliasTypeSymbol (name : TypeName , pos : Position = NoPosition , newFlags : Long = 0L ): AliasTypeSymbol =
163+ new AliasTypeSymbol (this , pos, name) initFlags newFlags
164164
165- def newModuleSymbol (name : TermName , pos : Position = NoPosition , flags : Long = 0L ): ModuleSymbol =
166- new ModuleSymbol (this , pos, name) initFlags flags
165+ def newModuleSymbol (name : TermName , pos : Position = NoPosition , newFlags : Long = 0L ): ModuleSymbol =
166+ new ModuleSymbol (this , pos, name) initFlags newFlags
167167
168- def newMethodSymbol (name : TermName , pos : Position = NoPosition , flags : Long = 0L ): MethodSymbol =
169- new MethodSymbol (this , pos, name) initFlags flags
168+ def newMethodSymbol (name : TermName , pos : Position = NoPosition , newFlags : Long = 0L ): MethodSymbol =
169+ new MethodSymbol (this , pos, name) initFlags newFlags
170170
171- def newClassSymbol (name : TypeName , pos : Position = NoPosition , flags : Long = 0L ): ClassSymbol =
172- new ClassSymbol (this , pos, name) initFlags flags
171+ def newClassSymbol (name : TypeName , pos : Position = NoPosition , newFlags : Long = 0L ): ClassSymbol =
172+ new ClassSymbol (this , pos, name) initFlags newFlags
173173
174- def newModuleClassSymbol (name : TypeName , pos : Position = NoPosition , flags : Long = 0L ): ModuleClassSymbol =
175- new ModuleClassSymbol (this , pos, name) initFlags flags
174+ def newModuleClassSymbol (name : TypeName , pos : Position = NoPosition , newFlags : Long = 0L ): ModuleClassSymbol =
175+ new ModuleClassSymbol (this , pos, name) initFlags newFlags
176176
177177 /** Derive whether it is an abstract type from the flags; after creation
178178 * the DEFERRED flag will be ignored.
179179 */
180- def newTypeSymbol (name : TypeName , pos : Position = NoPosition , flags : Long = 0L ): TypeSymbol =
181- if ((flags & DEFERRED ) == 0L )
182- newAliasTypeSymbol(name, pos, flags )
180+ def newTypeSymbol (name : TypeName , pos : Position = NoPosition , newFlags : Long = 0L ): TypeSymbol =
181+ if ((newFlags & DEFERRED ) == 0L )
182+ newAliasTypeSymbol(name, pos, newFlags )
183183 else
184- newAbstractTypeSymbol(name, pos, flags )
184+ newAbstractTypeSymbol(name, pos, newFlags )
185185
186- def newTypeSkolemSymbol (name : TypeName , origin : AnyRef , pos : Position = NoPosition , flags : Long = 0L ): TypeSkolem =
187- if ((flags & DEFERRED ) == 0L )
188- new TypeSkolem (this , pos, name, origin) initFlags flags
186+ def newTypeSkolemSymbol (name : TypeName , origin : AnyRef , pos : Position = NoPosition , newFlags : Long = 0L ): TypeSkolem =
187+ if ((newFlags & DEFERRED ) == 0L )
188+ new TypeSkolem (this , pos, name, origin) initFlags newFlags
189189 else
190- new TypeSkolem (this , pos, name, origin) with AbstractTypeMixin initFlags flags
190+ new TypeSkolem (this , pos, name, origin) with AbstractTypeMixin initFlags newFlags
191191
192192 /** @param pre type relative to which alternatives are seen.
193193 * for instance:
@@ -228,18 +228,18 @@ trait Symbols extends api.Symbols { self: SymbolTable =>
228228
229229 /** Symbol of a type definition type T = ...
230230 */
231- final def newAliasType (name : TypeName , pos : Position = NoPosition , flags : Long = 0L ): Symbol =
232- newAliasTypeSymbol(name, pos, flags )
231+ final def newAliasType (name : TypeName , pos : Position = NoPosition , newFlags : Long = 0L ): Symbol =
232+ newAliasTypeSymbol(name, pos, newFlags )
233233
234234 /** Symbol of an abstract type type T >: ... <: ...
235235 */
236- final def newAbstractType (name : TypeName , pos : Position = NoPosition , flags : Long = 0L ): Symbol =
237- newAbstractTypeSymbol(name, pos, DEFERRED | flags )
236+ final def newAbstractType (name : TypeName , pos : Position = NoPosition , newFlags : Long = 0L ): Symbol =
237+ newAbstractTypeSymbol(name, pos, DEFERRED | newFlags )
238238
239239 /** Symbol of a type parameter
240240 */
241- final def newTypeParameter (name : TypeName , pos : Position = NoPosition , flags : Long = 0L ) =
242- newAbstractType(name, pos, PARAM | flags )
241+ final def newTypeParameter (name : TypeName , pos : Position = NoPosition , newFlags : Long = 0L ) =
242+ newAbstractType(name, pos, PARAM | newFlags )
243243
244244 /** Synthetic value parameters when parameter symbols are not available
245245 */
@@ -257,8 +257,8 @@ trait Symbols extends api.Symbols { self: SymbolTable =>
257257 skolem setInfo (basis.info cloneInfo skolem)
258258 }
259259
260- final def newExistential (name : TypeName , pos : Position = NoPosition , flags : Long = 0L ): Symbol =
261- newAbstractType(name, pos, EXISTENTIAL | flags )
260+ final def newExistential (name : TypeName , pos : Position = NoPosition , newFlags : Long = 0L ): Symbol =
261+ newAbstractType(name, pos, EXISTENTIAL | newFlags )
262262
263263 final def freshExistential (suffix : String ): Symbol =
264264 newExistential(freshExistentialName(suffix), pos)
@@ -283,20 +283,20 @@ trait Symbols extends api.Symbols { self: SymbolTable =>
283283 final def newTypeSkolem : Symbol =
284284 owner.newTypeSkolemSymbol(name.toTypeName, this , pos, flags)
285285
286- final def newClass (name : TypeName , pos : Position = NoPosition ) =
287- newClassSymbol(name, pos)
286+ final def newClass (name : TypeName , pos : Position = NoPosition , newFlags : Long = 0L ) =
287+ newClassSymbol(name, pos, newFlags )
288288
289289 final def newModuleClass (name : TypeName , pos : Position = NoPosition ) =
290290 newModuleClassSymbol(name, pos)
291291
292292 final def newAnonymousClass (pos : Position ) =
293293 newClassSymbol(tpnme.ANON_CLASS_NAME , pos)
294294
295- final def newAnonymousFunctionClass (pos : Position , flags : Long = 0L ) =
296- newClassSymbol(tpnme.ANON_FUN_NAME , pos, FINAL | SYNTHETIC | flags )
295+ final def newAnonymousFunctionClass (pos : Position , newFlags : Long = 0L ) =
296+ newClassSymbol(tpnme.ANON_FUN_NAME , pos, FINAL | SYNTHETIC | newFlags )
297297
298- final def newAnonymousFunctionValue (pos : Position , flags : Long = 0L ) =
299- newTermSymbol(nme.ANON_FUN_NAME , pos, SYNTHETIC | flags ) setInfo NoType
298+ final def newAnonymousFunctionValue (pos : Position , newFlags : Long = 0L ) =
299+ newTermSymbol(nme.ANON_FUN_NAME , pos, SYNTHETIC | newFlags ) setInfo NoType
300300
301301 /** Refinement types P { val x: String; type T <: Number }
302302 * also have symbols, they are refinementClasses
@@ -307,7 +307,7 @@ trait Symbols extends api.Symbols { self: SymbolTable =>
307307 /** Create a new getter for current symbol (which must be a field)
308308 */
309309 final def newGetter : Symbol = (
310- owner.newMethod(nme.getterName(name.toTermName), flags = getterFlags(flags))
310+ owner.newMethod(nme.getterName(name.toTermName), NoPosition , getterFlags(flags))
311311 setPrivateWithin privateWithin
312312 setInfo MethodType (Nil , tpe)
313313 )
@@ -1002,6 +1002,13 @@ trait Symbols extends api.Symbols { self: SymbolTable =>
10021002 /** Substitute second list of symbols for first in current info. */
10031003 def substInfo (syms0 : List [Symbol ], syms1 : List [Symbol ]) = modifyInfo(_.substSym(syms0, syms1))
10041004 def setInfoOwnerAdjusted (info : Type ): this .type = setInfo(info atOwner this )
1005+
1006+ /** Set the info and enter this symbol into the owner's scope. */
1007+ def setInfoAndEnter (info : Type ): this .type = {
1008+ setInfo(info)
1009+ owner.info.decls enter this
1010+ this
1011+ }
10051012
10061013 /** Set new info valid from start of this phase. */
10071014 final def updateInfo (info : Type ): Symbol = {
0 commit comments