Skip to content

Commit bb704c0

Browse files
committed
Adapting branch to absence of modifiers in trees.
1 parent fbd15a7 commit bb704c0

File tree

4 files changed

+29
-56
lines changed

4 files changed

+29
-56
lines changed

src/dotty/tools/dotc/parsing/JavaParsers.scala

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -135,11 +135,11 @@ object JavaParsers {
135135
def makeSyntheticParam(count: Int, tpt: Tree): ValDef =
136136
makeParam(nme.syntheticParamName(count), tpt)
137137
def makeParam(name: TermName, tpt: Tree): ValDef =
138-
ValDef(Modifiers(Flags.JavaDefined | Flags.PrivateLocalParamAccessor), name, tpt, EmptyTree)
138+
ValDef(name, tpt, EmptyTree).withMods(Modifiers(Flags.JavaDefined | Flags.PrivateLocalParamAccessor))
139139

140140
def makeConstructor(formals: List[Tree], tparams: List[TypeDef], flags: FlagSet = Flags.JavaDefined) = {
141141
val vparams = mapWithIndex(formals)((p, i) => makeSyntheticParam(i + 1, p))
142-
DefDef(Modifiers(flags), nme.CONSTRUCTOR, tparams, List(vparams), TypeTree(), EmptyTree)
142+
DefDef(nme.CONSTRUCTOR, tparams, List(vparams), TypeTree(), EmptyTree).withMods(Modifiers(flags))
143143
}
144144

145145
// ------------- general parsing ---------------------------
@@ -420,7 +420,7 @@ object JavaParsers {
420420
atPos(in.offset) {
421421
val name = identForType()
422422
val hi = if (in.token == EXTENDS) { in.nextToken() ; bound() } else EmptyTree
423-
TypeDef(Modifiers(flags), name, Nil, TypeBoundsTree(EmptyTree, hi))
423+
TypeDef(name, Nil, TypeBoundsTree(EmptyTree, hi)).withMods(Modifiers(flags))
424424
}
425425

426426
def bound(): Tree =
@@ -490,7 +490,7 @@ object JavaParsers {
490490
optThrows()
491491
List {
492492
atPos(offset) {
493-
DefDef(mods, nme.CONSTRUCTOR, parentTParams, List(vparams), TypeTree(), methodBody())
493+
DefDef(nme.CONSTRUCTOR, parentTParams, List(vparams), TypeTree(), methodBody()).withMods(mods)
494494
}
495495
}
496496
} else {
@@ -525,7 +525,7 @@ object JavaParsers {
525525
//if (inInterface) mods1 |= Flags.Deferred
526526
List {
527527
atPos(offset) {
528-
DefDef(mods1 | Flags.Method, name.toTermName, tparams, List(vparams), rtpt, body)
528+
DefDef(name.toTermName, tparams, List(vparams), rtpt, body).withMods(mods1 | Flags.Method)
529529
}
530530
}
531531
} else {
@@ -581,7 +581,7 @@ object JavaParsers {
581581
if (in.token == EQUALS && !(mods is Flags.Param)) skipTo(COMMA, SEMI)
582582
val mods1 = if(mods is Flags.Final) mods else mods | Flags.Mutable
583583
atPos(pos) {
584-
ValDef(mods1, name, tpt1, if(mods is Flags.Param) EmptyTree else unimplementedExpr)
584+
ValDef(name, tpt1, if(mods is Flags.Param) EmptyTree else unimplementedExpr).withMods(mods1)
585585
}
586586
}
587587

@@ -594,8 +594,8 @@ object JavaParsers {
594594

595595
def makeCompanionObject(cdef: TypeDef, statics: List[Tree]): Tree =
596596
atPos(cdef.pos) {
597-
ModuleDef((cdef.mods & (Flags.AccessFlags | Flags.JavaDefined)).toTermFlags, cdef.name.toTermName,
598-
makeTemplate(List(), statics, List(), false))
597+
ModuleDef(cdef.name.toTermName,
598+
makeTemplate(List(), statics, List(), false)).withMods((cdef.mods & (Flags.AccessFlags | Flags.JavaDefined)).toTermFlags)
599599
}
600600

601601
private val wild = Ident(nme.WILDCARD) withPos Position(-1)
@@ -623,10 +623,10 @@ object JavaParsers {
623623
if (statics.isEmpty) cdef
624624
else {
625625
val template = cdef.rhs.asInstanceOf[Template]
626-
cpy.TypeDef(cdef)(cdef.mods, cdef.name,
626+
cpy.TypeDef(cdef)(cdef.name,
627627
cpy.Template(template)(template.constr, template.parents, template.self,
628628
importCompanionObject(cdef) :: template.body),
629-
cdef.tparams)
629+
cdef.tparams).withMods(cdef.mods)
630630
}
631631

632632
List(makeCompanionObject(cdefNew, statics), cdefNew)
@@ -694,7 +694,7 @@ object JavaParsers {
694694
val interfaces = interfacesOpt()
695695
val (statics, body) = typeBody(CLASS, name, tparams)
696696
addCompanionObject(statics, atPos(offset) {
697-
TypeDef(mods, name, makeTemplate(superclass :: interfaces, body, tparams, true))
697+
TypeDef(name, makeTemplate(superclass :: interfaces, body, tparams, true)).withMods(mods)
698698
})
699699
}
700700

@@ -712,9 +712,9 @@ object JavaParsers {
712712
}
713713
val (statics, body) = typeBody(INTERFACE, name, tparams)
714714
addCompanionObject(statics, atPos(offset) {
715-
TypeDef(mods | Flags.Trait | Flags.Interface | Flags.Abstract,
715+
TypeDef(
716716
name, tparams,
717-
makeTemplate(parents, body, tparams, false))
717+
makeTemplate(parents, body, tparams, false)).withMods(mods | Flags.Trait | Flags.JavaInterface | Flags.Abstract)
718718
})
719719
}
720720

@@ -746,9 +746,9 @@ object JavaParsers {
746746
}
747747
}
748748
def forwarders(sdef: Tree): List[Tree] = sdef match {
749-
case TypeDef(mods, name, _) if (parentToken == INTERFACE) =>
749+
case TypeDef(name, _) if (parentToken == INTERFACE) =>
750750
var rhs: Tree = Select(Ident(parentName.toTermName), name)
751-
List(TypeDef(Modifiers(Flags.Protected), name, rhs))
751+
List(TypeDef(name, rhs).withMods(Modifiers(Flags.Protected)))
752752
case _ =>
753753
List()
754754
}
@@ -770,12 +770,12 @@ object JavaParsers {
770770
val constructorParams = body.collect {
771771
case dd: DefDef => makeParam(dd.name, dd.tpt)
772772
}
773-
val constr = DefDef(Modifiers(Flags.JavaDefined), nme.CONSTRUCTOR,
774-
List(), List(constructorParams), TypeTree(), EmptyTree)
773+
val constr = DefDef(nme.CONSTRUCTOR,
774+
List(), List(constructorParams), TypeTree(), EmptyTree).withMods(Modifiers(Flags.JavaDefined))
775775
val body1 = body.filterNot(_.isInstanceOf[DefDef])
776776
val templ = makeTemplate(annotationParents, constr :: body1, List(), false)
777777
addCompanionObject(statics, atPos(offset) {
778-
TypeDef(mods | Flags.Abstract, name, templ)
778+
TypeDef(name, templ).withMods(mods | Flags.Abstract)
779779
})
780780
}
781781

@@ -807,15 +807,15 @@ object JavaParsers {
807807
}
808808
val predefs = List(
809809
DefDef(
810-
Modifiers(Flags.JavaDefined | Flags.JavaStatic | Flags.Method), nme.values, List(),
810+
nme.values, List(),
811811
ListOfNil,
812812
arrayOf(enumType),
813-
unimplementedExpr),
813+
unimplementedExpr).withMods(Modifiers(Flags.JavaDefined | Flags.JavaStatic | Flags.Method)),
814814
DefDef(
815-
Modifiers(Flags.JavaDefined | Flags.JavaStatic | Flags.Method), nme.valueOf, List(),
815+
nme.valueOf, List(),
816816
List(List(makeParam("x".toTermName, TypeTree(StringType)))),
817817
enumType,
818-
unimplementedExpr))
818+
unimplementedExpr).withMods(Modifiers(Flags.JavaDefined | Flags.JavaStatic | Flags.Method)))
819819
accept(RBRACE)
820820
/*
821821
val superclazz =
@@ -825,8 +825,8 @@ object JavaParsers {
825825
Select(New(javaLangDot(tpnme.Enum)), nme.CONSTRUCTOR), List(enumType)),
826826
List(Literal(Constant(null)),Literal(Constant(0))))
827827
addCompanionObject(consts ::: statics ::: predefs, atPos(offset) {
828-
TypeDef(mods | Flags.Enum, name, List(),
829-
makeTemplate(superclazz :: interfaces, body, List(), true))
828+
TypeDef(name, List(),
829+
makeTemplate(superclazz :: interfaces, body, List(), true)).withMods(mods | Flags.Enum)
830830
})
831831
}
832832

@@ -844,7 +844,7 @@ object JavaParsers {
844844
skipAhead()
845845
accept(RBRACE)
846846
}
847-
ValDef(Modifiers(Flags.Enum | Flags.Stable | Flags.JavaDefined | Flags.JavaStatic), name.toTermName, enumType, unimplementedExpr)
847+
ValDef(name.toTermName, enumType, unimplementedExpr).withMods(Modifiers(Flags.Enum | Flags.Stable | Flags.JavaDefined | Flags.JavaStatic))
848848
}
849849
}
850850

src/dotty/tools/dotc/transform/ElimRepeated.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ class ElimRepeated extends MiniPhaseTransform with InfoTransformer with Annotati
5757
transformTypeOfTree(tree)
5858

5959
override def transformApply(tree: Apply)(implicit ctx: Context, info: TransformerInfo): Tree =
60-
transformTypeOfTree(tree)
60+
transformTypeOfTree(tree) // should also transform the tree if argument needs adaptation
6161

6262
override def transformTypeApply(tree: TypeApply)(implicit ctx: Context, info: TransformerInfo): Tree =
6363
transformTypeOfTree(tree)
@@ -71,7 +71,7 @@ class ElimRepeated extends MiniPhaseTransform with InfoTransformer with Annotati
7171
if (tree.symbol.info.isVarArgsMethod && overridesJava)
7272
addVarArgsBridge(tree)(ctx.withPhase(thisTransformer.next))
7373
else
74-
transformAnnotations(tree)
74+
tree
7575
}
7676

7777
/** Add a Java varargs bridge
@@ -94,7 +94,7 @@ class ElimRepeated extends MiniPhaseTransform with InfoTransformer with Annotati
9494
.appliedToArgs(vrefs :+ TreeGen.wrapArray(varArgRef, elemtp))
9595
.appliedToArgss(vrefss1)
9696
})
97-
Thicket(transformAnnotations(ddef), transformAnnotations(bridgeDef))
97+
Thicket(ddef, bridgeDef)
9898
}
9999

100100
/** Convert type from Scala to Java varargs method */

src/dotty/tools/dotc/transform/FirstTransform.scala

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,14 +88,12 @@ class FirstTransform extends MiniPhaseTransform with IdentityDenotTransformer wi
8888
}
8989

9090
override def transformDefDef(ddef: DefDef)(implicit ctx: Context, info: TransformerInfo) = {
91-
val r =
9291
if (ddef.symbol.hasAnnotation(defn.NativeAnnot)) {
9392
ddef.symbol.resetFlag(Deferred)
9493
DefDef(ddef.symbol.asTerm,
9594
_ => ref(defn.Sys_error).withPos(ddef.pos)
9695
.appliedTo(Literal(Constant("native method stub"))))
9796
} else ddef
98-
transformAnnotations(r)
9997
}
10098

10199
override def transformStats(trees: List[Tree])(implicit ctx: Context, info: TransformerInfo): List[Tree] =

src/dotty/tools/dotc/transform/TreeTransform.scala

Lines changed: 1 addition & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -184,38 +184,13 @@ object TreeTransforms {
184184
ref match {
185185
case ref: SymDenotation =>
186186
val annotTrees = ref.annotations.map(_.tree)
187-
val annotTrees1 = annotTrees.mapConserve(annotationTransformer.transform)
187+
val annotTrees1 = annotTrees.mapConserve(annotationTransformer.macroTransform)
188188
val annots1 = if(annotTrees eq annotTrees1) ref.annotations else annotTrees1.map(new ConcreteAnnotation(_))
189189
if ((info1 eq ref.info) && (annots1 eq ref.annotations)) ref
190190
else ref.copySymDenotation(info = info1, annotations = annots1)
191191
case _ => if (info1 eq ref.info) ref else ref.derivedSingleDenotation(ref.symbol, info1)
192192
}
193193
}
194-
195-
def transformAnnotations(tree: MemberDef)(implicit ctx: Context): MemberDef ={
196-
val newAnnots = tree.mods.annotations.mapConserve(annotationTransformer.transform)
197-
if (newAnnots eq tree.mods.annotations) tree
198-
else {
199-
val mods = tree.mods.copy(annotations = newAnnots)
200-
tree match {
201-
case t: DefDef => cpy.DefDef(t)(mods = mods)
202-
case t: ValDef => cpy.ValDef(t)(mods = mods)
203-
case t: TypeDef => cpy.TypeDef(t)(mods = mods)
204-
}
205-
}
206-
}
207-
208-
override def transformDefDef(tree: DefDef)(implicit ctx: Context, info: TransformerInfo): Tree = {
209-
transformAnnotations(tree)
210-
}
211-
212-
override def transformTypeDef(tree: TypeDef)(implicit ctx: Context, info: TransformerInfo): Tree = {
213-
transformAnnotations(tree)
214-
}
215-
216-
override def transformValDef(tree: tpd.ValDef)(implicit ctx: Context, info: TransformerInfo): tpd.Tree = {
217-
transformAnnotations(tree)
218-
}
219194
}
220195

221196
val NoTransform = new TreeTransform {

0 commit comments

Comments
 (0)