summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/reflect/scala/reflect/api/Internals.scala38
-rw-r--r--src/reflect/scala/reflect/api/Types.scala4
-rw-r--r--src/reflect/scala/reflect/internal/Internals.scala1
-rw-r--r--test/files/pos/reflection-compat-api-universe.check0
-rw-r--r--test/files/pos/reflection-compat-api-universe.scala136
-rw-r--r--test/files/pos/reflection-compat-c.check0
-rw-r--r--test/files/pos/reflection-compat-c.scala139
-rw-r--r--test/files/pos/reflection-compat-macro-universe.check0
-rw-r--r--test/files/pos/reflection-compat-macro-universe.scala177
-rw-r--r--test/files/pos/reflection-compat-ru.check0
-rw-r--r--test/files/pos/reflection-compat-ru.scala135
-rw-r--r--test/files/run/reflection-tags.scala1
-rw-r--r--test/files/run/t8190.scala1
13 files changed, 632 insertions, 0 deletions
diff --git a/src/reflect/scala/reflect/api/Internals.scala b/src/reflect/scala/reflect/api/Internals.scala
index 37406385c8..01700345d1 100644
--- a/src/reflect/scala/reflect/api/Internals.scala
+++ b/src/reflect/scala/reflect/api/Internals.scala
@@ -280,6 +280,10 @@ trait Internals { self: Universe =>
/** A creator for `RefinedType` types.
*/
+ def refinedType(parents: List[Type], decls: Scope, clazz: Symbol): RefinedType
+
+ /** A creator for `RefinedType` types.
+ */
def refinedType(parents: List[Type], owner: Symbol): Type
/** A creator for `RefinedType` types.
@@ -785,6 +789,9 @@ trait Internals { self: Universe =>
@deprecated("Use `internal.reificationSupport` instead", "2.11.0")
val build: ReificationSupportApi
+ @deprecated("Use `internal.ReificationSupportApi` instead", "2.11.0")
+ type BuildApi = ReificationSupportApi
+
/** This trait provides support for importers, a facility to migrate reflection artifacts between universes.
* ''Note: this trait should typically be used only rarely.''
*
@@ -1030,6 +1037,37 @@ trait Internals { self: Universe =>
def newScopeWith(elems: Symbol*): Scope =
internal.newScopeWith(elems: _*)
+ /** Scala 2.10 compatibility enrichments for BuildApi. */
+ implicit class CompatibleBuildApi(api: BuildApi) {
+ /** @see [[BuildApi.setInfo]] */
+ @deprecated("Use `internal.reificationSupport.setInfo` instead", "2.11.0")
+ def setTypeSignature[S <: Symbol](sym: S, tpe: Type): S = internal.reificationSupport.setInfo(sym, tpe)
+
+ /** @see [[BuildApi.FlagsRepr]] */
+ @deprecated("Use `internal.reificationSupport.FlagsRepr` instead", "2.11.0")
+ def flagsFromBits(bits: Long): FlagSet = internal.reificationSupport.FlagsRepr(bits)
+
+ /** @see [[BuildApi.noSelfType]] */
+ @deprecated("Use `noSelfType` instead", "2.11.0")
+ def emptyValDef: ValDef = noSelfType
+
+ /** @see [[BuildApi.mkThis]] */
+ @deprecated("Use `internal.reificationSupport.mkThis` instead", "2.11.0")
+ def This(sym: Symbol): Tree = internal.reificationSupport.mkThis(sym)
+
+ /** @see [[BuildApi.mkSelect]] */
+ @deprecated("Use `internal.reificationSupport.mkSelect` instead", "2.11.0")
+ def Select(qualifier: Tree, sym: Symbol): Select = internal.reificationSupport.mkSelect(qualifier, sym)
+
+ /** @see [[BuildApi.mkIdent]] */
+ @deprecated("Use `internal.reificationSupport.mkIdent` instead", "2.11.0")
+ def Ident(sym: Symbol): Ident = internal.reificationSupport.mkIdent(sym)
+
+ /** @see [[BuildApi.mkTypeTree]] */
+ @deprecated("Use `internal.reificationSupport.mkTypeTree` instead", "2.11.0")
+ def TypeTree(tp: Type): TypeTree = internal.reificationSupport.mkTypeTree(tp)
+ }
+
/** Scala 2.10 compatibility enrichments for Tree. */
implicit class CompatibleTree(tree: Tree) {
/** @see [[InternalApi.freeTerms]] */
diff --git a/src/reflect/scala/reflect/api/Types.scala b/src/reflect/scala/reflect/api/Types.scala
index 0e176170f8..f6995dd5de 100644
--- a/src/reflect/scala/reflect/api/Types.scala
+++ b/src/reflect/scala/reflect/api/Types.scala
@@ -657,6 +657,10 @@ trait Types {
/** @see [[InternalApi.refinedType]] */
@deprecated("Use `internal.refinedType` instead", "2.11.0")
def apply(parents: List[Type], decls: Scope)(implicit token: CompatToken): RefinedType = internal.refinedType(parents, decls)
+
+ /** @see [[InternalApi.refinedType]] */
+ @deprecated("Use `internal.refinedType` instead", "2.11.0")
+ def apply(parents: List[Type], decls: Scope, clazz: Symbol)(implicit token: CompatToken): RefinedType = internal.refinedType(parents, decls, clazz)
}
/** The API that all refined types support.
diff --git a/src/reflect/scala/reflect/internal/Internals.scala b/src/reflect/scala/reflect/internal/Internals.scala
index e8bf842e6e..e9916cf7d1 100644
--- a/src/reflect/scala/reflect/internal/Internals.scala
+++ b/src/reflect/scala/reflect/internal/Internals.scala
@@ -113,6 +113,7 @@ trait Internals extends api.Internals {
def constantType(value: Constant): ConstantType = self.ConstantType(value)
def typeRef(pre: Type, sym: Symbol, args: List[Type]): Type = self.TypeRef(pre, sym, args)
def refinedType(parents: List[Type], decls: Scope): RefinedType = self.RefinedType(parents, decls)
+ def refinedType(parents: List[Type], decls: Scope, clazz: Symbol): RefinedType = self.RefinedType(parents, decls, clazz)
def refinedType(parents: List[Type], owner: Symbol): Type = self.refinedType(parents, owner)
def refinedType(parents: List[Type], owner: Symbol, decls: Scope): Type = self.RefinedType(parents, decls, owner)
def refinedType(parents: List[Type], owner: Symbol, decls: Scope, pos: Position): Type = self.refinedType(parents, owner, decls, pos)
diff --git a/test/files/pos/reflection-compat-api-universe.check b/test/files/pos/reflection-compat-api-universe.check
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/test/files/pos/reflection-compat-api-universe.check
diff --git a/test/files/pos/reflection-compat-api-universe.scala b/test/files/pos/reflection-compat-api-universe.scala
new file mode 100644
index 0000000000..0aee8bcda5
--- /dev/null
+++ b/test/files/pos/reflection-compat-api-universe.scala
@@ -0,0 +1,136 @@
+object Test extends App {
+ val u: scala.reflect.api.Universe = ???
+ import u._
+ import scala.reflect.ClassTag
+ import compat._
+
+ val tree: Tree = ???
+ val ttree: TypeTree = ???
+ val stree: SymTree = ???
+ val trees: List[Tree] = ???
+ val mods: Modifiers = ???
+ val impl: Template = ???
+ val vparamss: List[List[ValDef]] = ???
+ val rhs: Tree = ???
+ val sym: Symbol = ???
+ val tsym: TypeSymbol = ???
+ val syms: List[Symbol] = ???
+ val params: List[Symbol] = ???
+ val tparams: List[Symbol] = ???
+ val tpe: Type = ???
+ val tpes: List[Type] = ???
+ val manifest: Manifest[Int] = ???
+ val tag: TypeTag[Int] = ???
+ val mirror: Mirror = ???
+ val decls: Scope = ???
+ val pos: Position = ???
+ val ann: Annotation = ???
+ val anns: List[Annotation] = ???
+ val const: Constant = ???
+ val name: Name = ???
+ val tyname: TypeName = ???
+ val tename: TermName = ???
+ val flags: FlagSet = ???
+ val str: String = ???
+ val i: Int = ???
+ val b: Boolean = ???
+
+ // abstract class BuildApi
+ // abstract class ReferenceToBoxedExtractor
+ // abstract trait AttachableApi
+ // abstract trait FreeTermSymbolApi
+ // abstract trait FreeTypeSymbolApi
+ // abstract trait IdentContextApi
+ // abstract trait ReferenceToBoxedApi
+ // abstract trait SymTreeContextApi
+ // abstract trait SymbolContextApi
+ // abstract trait TreeContextApi
+ // abstract trait TypeTreeContextApi
+ locally(ClassDef(sym, impl): ClassDef)
+ locally(DefDef(sym, mods, vparamss, rhs): DefDef)
+ locally(DefDef(sym, vparamss, rhs): DefDef)
+ locally(DefDef(sym, mods, rhs): DefDef)
+ locally(DefDef(sym, rhs): DefDef)
+ locally(DefDef(sym, (??? : List[List[Symbol]] => Tree)): DefDef)
+ locally(LabelDef(sym, params, rhs): LabelDef)
+ locally(ModuleDef(sym, impl): ModuleDef)
+ locally(TypeDef(sym, rhs): TypeDef)
+ locally(TypeDef(sym): TypeDef)
+ locally(ValDef(sym, rhs): ValDef)
+ locally(ValDef(sym): ValDef)
+ locally(AnnotatedType(anns, tpe): AnnotatedType)
+ locally(BoundedWildcardType(??? : TypeBounds): BoundedWildcardType)
+ locally(TypeBounds(tpe, tpe): TypeBounds)
+ locally(MethodType(params, tpe): MethodType)
+ locally(RefinedType(tpes, decls): RefinedType)
+ locally(RefinedType(tpes, decls, sym): RefinedType)
+ locally(ClassInfoType(tpes, decls, sym): ClassInfoType)
+ locally(SingleType(tpe, sym): Type)
+ locally(TypeRef(tpe, sym, tpes): Type)
+ locally(ExistentialType(syms, tpe): ExistentialType)
+ locally(NullaryMethodType(tpe): NullaryMethodType)
+ locally(ThisType(sym): Type)
+ locally(SuperType(tpe, tpe): Type)
+ locally(PolyType(syms, tpe): PolyType)
+ locally(ConstantType(const): ConstantType)
+ locally(sym.asFreeTerm: FreeTermSymbol)
+ locally(sym.asFreeType: FreeTypeSymbol)
+ locally(existentialAbstraction(tparams, tpe): Type)
+ locally(tree.freeTerms: List[FreeTermSymbol])
+ locally(tree.freeTypes: List[FreeTypeSymbol])
+ locally(intersectionType(tpes): Type)
+ locally(intersectionType(tpes, sym): Type)
+ locally(sym.isErroneous: Boolean)
+ locally(sym.isFreeTerm: Boolean)
+ locally(sym.isFreeType: Boolean)
+ locally(sym.isLocal: Boolean)
+ locally(sym.isOverride: Boolean)
+ locally(tsym.isSkolem: Boolean)
+ locally(manifestToTypeTag(mirror, manifest): scala.reflect.api.Universe#TypeTag[Int])
+ locally(mkImporter(scala.reflect.runtime.universe): Importer{val from: scala.reflect.runtime.universe.type})
+ locally(sym.newClassSymbol(tyname, pos, flags): ClassSymbol)
+ locally(sym.newMethodSymbol(tename, pos, flags): MethodSymbol)
+ locally(sym.newModuleAndClassSymbol(name, pos, flags): (ModuleSymbol, ClassSymbol))
+ locally(newScopeWith(sym, sym, sym): Scope)
+ locally(sym.newTermSymbol(tename, pos, flags): TermSymbol)
+ locally(sym.newTypeSymbol(tyname, pos, flags): TypeSymbol)
+ locally(polyType(tparams, tpe): Type)
+ locally(sym.pos: Position)
+ locally(refinedType(tpes, sym): Type)
+ locally(refinedType(tpes, sym, decls, pos): Type)
+ locally(singleType(tpe, sym): Type)
+ locally(tree.substituteSymbols(syms, syms): Tree)
+ locally(tree.substituteThis(sym, tree): Tree)
+ locally(tree.substituteTypes(syms, tpes): Tree)
+ locally(typeRef(tpe, sym, tpes): Type)
+ locally(typeTagToManifest(mirror, tag): Manifest[Int])
+ locally(FreeTermSymbolTag: ClassTag[FreeTermSymbol])
+ locally((??? : FreeTermSymbol).origin)
+ locally((??? : FreeTermSymbol).value)
+ locally(FreeTypeSymbolTag: ClassTag[FreeTypeSymbol])
+ locally((??? : FreeTypeSymbol).origin)
+ locally(ReferenceToBoxedTag: ClassTag[ReferenceToBoxed])
+ locally(build: BuildApi)
+ locally(ReferenceToBoxed(??? : Ident): ReferenceToBoxed)
+ locally((??? : ReferenceToBoxed).ident: Tree)
+ locally(ReferenceToBoxed.unapply(???): Option[Ident])
+ locally(build.selectType(sym, str): TypeSymbol)
+ locally(build.selectTerm(sym, str): TermSymbol)
+ locally(build.selectOverloadedMethod(sym, str, i): MethodSymbol)
+ locally(build.newNestedSymbol(sym, name, pos, flags, b): Symbol)
+ locally(build.newFreeTerm(str, i): FreeTermSymbol)
+ locally(build.newFreeTerm(str, i, flags, str): FreeTermSymbol)
+ locally(build.newFreeType(str): FreeTypeSymbol)
+ locally(build.newFreeType(str, flags, str): FreeTypeSymbol)
+ locally(build.setTypeSignature(sym, tpe): Symbol)
+ locally(build.setAnnotations(sym, anns): Symbol)
+ locally(build.flagsFromBits(??? : Long): FlagSet)
+ locally(build.emptyValDef: ValDef)
+ locally(build.This(sym): Tree)
+ locally(build.Select(tree, sym): Select)
+ locally(build.Ident(sym): Ident)
+ locally(build.TypeTree(tpe): TypeTree)
+ locally(build.thisPrefix(sym): Type)
+ locally(build.setType(tree, tpe): Tree)
+ locally(build.setSymbol(tree, sym): Tree)
+} \ No newline at end of file
diff --git a/test/files/pos/reflection-compat-c.check b/test/files/pos/reflection-compat-c.check
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/test/files/pos/reflection-compat-c.check
diff --git a/test/files/pos/reflection-compat-c.scala b/test/files/pos/reflection-compat-c.scala
new file mode 100644
index 0000000000..73158decdc
--- /dev/null
+++ b/test/files/pos/reflection-compat-c.scala
@@ -0,0 +1,139 @@
+import scala.reflect.macros.Context
+
+object Test extends App {
+ def impl(c: Context) = {
+ import c.universe._
+ import scala.reflect.ClassTag
+ import compat._
+
+ val tree: Tree = ???
+ val ttree: TypeTree = ???
+ val stree: SymTree = ???
+ val trees: List[Tree] = ???
+ val mods: Modifiers = ???
+ val impl: Template = ???
+ val vparamss: List[List[ValDef]] = ???
+ val rhs: Tree = ???
+ val sym: Symbol = ???
+ val tsym: TypeSymbol = ???
+ val syms: List[Symbol] = ???
+ val params: List[Symbol] = ???
+ val tparams: List[Symbol] = ???
+ val tpe: Type = ???
+ val tpes: List[Type] = ???
+ val manifest: Manifest[Int] = ???
+ val tag: TypeTag[Int] = ???
+ val mirror: Mirror = ???
+ val decls: Scope = ???
+ val pos: Position = ???
+ val ann: Annotation = ???
+ val anns: List[Annotation] = ???
+ val const: Constant = ???
+ val name: Name = ???
+ val tyname: TypeName = ???
+ val tename: TermName = ???
+ val flags: FlagSet = ???
+ val str: String = ???
+ val i: Int = ???
+ val b: Boolean = ???
+
+ // abstract class BuildApi
+ // abstract class ReferenceToBoxedExtractor
+ // abstract trait AttachableApi
+ // abstract trait FreeTermSymbolApi
+ // abstract trait FreeTypeSymbolApi
+ // abstract trait IdentContextApi
+ // abstract trait ReferenceToBoxedApi
+ // abstract trait SymTreeContextApi
+ // abstract trait SymbolContextApi
+ // abstract trait TreeContextApi
+ // abstract trait TypeTreeContextApi
+ locally(ClassDef(sym, impl): ClassDef)
+ locally(DefDef(sym, mods, vparamss, rhs): DefDef)
+ locally(DefDef(sym, vparamss, rhs): DefDef)
+ locally(DefDef(sym, mods, rhs): DefDef)
+ locally(DefDef(sym, rhs): DefDef)
+ locally(DefDef(sym, (??? : List[List[Symbol]] => Tree)): DefDef)
+ locally(LabelDef(sym, params, rhs): LabelDef)
+ locally(ModuleDef(sym, impl): ModuleDef)
+ locally(TypeDef(sym, rhs): TypeDef)
+ locally(TypeDef(sym): TypeDef)
+ locally(ValDef(sym, rhs): ValDef)
+ locally(ValDef(sym): ValDef)
+ locally(AnnotatedType(anns, tpe): AnnotatedType)
+ locally(BoundedWildcardType(??? : TypeBounds): BoundedWildcardType)
+ locally(TypeBounds(tpe, tpe): TypeBounds)
+ locally(MethodType(params, tpe): MethodType)
+ locally(RefinedType(tpes, decls): RefinedType)
+ locally(RefinedType(tpes, decls, sym): RefinedType)
+ locally(ClassInfoType(tpes, decls, sym): ClassInfoType)
+ locally(SingleType(tpe, sym): Type)
+ locally(TypeRef(tpe, sym, tpes): Type)
+ locally(ExistentialType(syms, tpe): ExistentialType)
+ locally(NullaryMethodType(tpe): NullaryMethodType)
+ locally(ThisType(sym): Type)
+ locally(SuperType(tpe, tpe): Type)
+ locally(PolyType(syms, tpe): PolyType)
+ locally(ConstantType(const): ConstantType)
+ locally(sym.asFreeTerm: FreeTermSymbol)
+ locally(sym.asFreeType: FreeTypeSymbol)
+ locally(existentialAbstraction(tparams, tpe): Type)
+ locally(tree.freeTerms: List[FreeTermSymbol])
+ locally(tree.freeTypes: List[FreeTypeSymbol])
+ locally(intersectionType(tpes): Type)
+ locally(intersectionType(tpes, sym): Type)
+ locally(sym.isErroneous: Boolean)
+ locally(sym.isFreeTerm: Boolean)
+ locally(sym.isFreeType: Boolean)
+ locally(sym.isLocal: Boolean)
+ locally(sym.isOverride: Boolean)
+ locally(tsym.isSkolem: Boolean)
+ locally(manifestToTypeTag(mirror, manifest): scala.reflect.api.Universe#TypeTag[Int])
+ locally(mkImporter(scala.reflect.runtime.universe): Importer{val from: scala.reflect.runtime.universe.type})
+ locally(sym.newClassSymbol(tyname, pos, flags): ClassSymbol)
+ locally(sym.newMethodSymbol(tename, pos, flags): MethodSymbol)
+ locally(sym.newModuleAndClassSymbol(name, pos, flags): (ModuleSymbol, ClassSymbol))
+ locally(newScopeWith(sym, sym, sym): Scope)
+ locally(sym.newTermSymbol(tename, pos, flags): TermSymbol)
+ locally(sym.newTypeSymbol(tyname, pos, flags): TypeSymbol)
+ locally(polyType(tparams, tpe): Type)
+ locally(sym.pos: Position)
+ locally(refinedType(tpes, sym): Type)
+ locally(refinedType(tpes, sym, decls, pos): Type)
+ locally(singleType(tpe, sym): Type)
+ locally(tree.substituteSymbols(syms, syms): Tree)
+ locally(tree.substituteThis(sym, tree): Tree)
+ locally(tree.substituteTypes(syms, tpes): Tree)
+ locally(typeRef(tpe, sym, tpes): Type)
+ locally(typeTagToManifest(mirror, tag): Manifest[Int])
+ locally(FreeTermSymbolTag: ClassTag[FreeTermSymbol])
+ locally((??? : FreeTermSymbol).origin)
+ locally((??? : FreeTermSymbol).value)
+ locally(FreeTypeSymbolTag: ClassTag[FreeTypeSymbol])
+ locally((??? : FreeTypeSymbol).origin)
+ locally(ReferenceToBoxedTag: ClassTag[ReferenceToBoxed])
+ locally(build: BuildApi)
+ locally(ReferenceToBoxed(??? : Ident): ReferenceToBoxed)
+ locally((??? : ReferenceToBoxed).ident: Tree)
+ locally(ReferenceToBoxed.unapply(???): Option[Ident])
+ locally(build.selectType(sym, str): TypeSymbol)
+ locally(build.selectTerm(sym, str): TermSymbol)
+ locally(build.selectOverloadedMethod(sym, str, i): MethodSymbol)
+ locally(build.newNestedSymbol(sym, name, pos, flags, b): Symbol)
+ locally(build.newFreeTerm(str, i): FreeTermSymbol)
+ locally(build.newFreeTerm(str, i, flags, str): FreeTermSymbol)
+ locally(build.newFreeType(str): FreeTypeSymbol)
+ locally(build.newFreeType(str, flags, str): FreeTypeSymbol)
+ locally(build.setTypeSignature(sym, tpe): Symbol)
+ locally(build.setAnnotations(sym, anns): Symbol)
+ locally(build.flagsFromBits(??? : Long): FlagSet)
+ locally(build.emptyValDef: ValDef)
+ locally(build.This(sym): Tree)
+ locally(build.Select(tree, sym): Select)
+ locally(build.Ident(sym): Ident)
+ locally(build.TypeTree(tpe): TypeTree)
+ locally(build.thisPrefix(sym): Type)
+ locally(build.setType(tree, tpe): Tree)
+ locally(build.setSymbol(tree, sym): Tree)
+ }
+} \ No newline at end of file
diff --git a/test/files/pos/reflection-compat-macro-universe.check b/test/files/pos/reflection-compat-macro-universe.check
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/test/files/pos/reflection-compat-macro-universe.check
diff --git a/test/files/pos/reflection-compat-macro-universe.scala b/test/files/pos/reflection-compat-macro-universe.scala
new file mode 100644
index 0000000000..89ca36dab2
--- /dev/null
+++ b/test/files/pos/reflection-compat-macro-universe.scala
@@ -0,0 +1,177 @@
+object Test extends App {
+ val u: scala.reflect.macros.Universe = ???
+ import u._
+ import scala.reflect.macros.Attachments
+ import scala.reflect.ClassTag
+ import compat._
+
+ val tree: Tree = ???
+ val ttree: TypeTree = ???
+ val stree: SymTree = ???
+ val trees: List[Tree] = ???
+ val mods: Modifiers = ???
+ val impl: Template = ???
+ val vparamss: List[List[ValDef]] = ???
+ val rhs: Tree = ???
+ val sym: Symbol = ???
+ val tsym: TypeSymbol = ???
+ val syms: List[Symbol] = ???
+ val params: List[Symbol] = ???
+ val tparams: List[Symbol] = ???
+ val tpe: Type = ???
+ val tpes: List[Type] = ???
+ val manifest: Manifest[Int] = ???
+ val tag: TypeTag[Int] = ???
+ val mirror: Mirror = ???
+ val decls: Scope = ???
+ val pos: Position = ???
+ val ann: Annotation = ???
+ val anns: List[Annotation] = ???
+ val const: Constant = ???
+ val name: Name = ???
+ val tyname: TypeName = ???
+ val tename: TermName = ???
+ val flags: FlagSet = ???
+ val str: String = ???
+ val i: Int = ???
+ val b: Boolean = ???
+
+ // abstract class BuildApi
+ // abstract class ReferenceToBoxedExtractor
+ // abstract trait AttachableApi
+ // abstract trait FreeTermSymbolApi
+ // abstract trait FreeTypeSymbolApi
+ // abstract trait IdentContextApi
+ // abstract trait ReferenceToBoxedApi
+ // abstract trait SymTreeContextApi
+ // abstract trait SymbolContextApi
+ // abstract trait TreeContextApi
+ // abstract trait TypeTreeContextApi
+ locally(ClassDef(sym, impl): ClassDef)
+ locally(DefDef(sym, mods, vparamss, rhs): DefDef)
+ locally(DefDef(sym, vparamss, rhs): DefDef)
+ locally(DefDef(sym, mods, rhs): DefDef)
+ locally(DefDef(sym, rhs): DefDef)
+ locally(DefDef(sym, (??? : List[List[Symbol]] => Tree)): DefDef)
+ locally(LabelDef(sym, params, rhs): LabelDef)
+ locally(ModuleDef(sym, impl): ModuleDef)
+ locally(TypeDef(sym, rhs): TypeDef)
+ locally(TypeDef(sym): TypeDef)
+ locally(ValDef(sym, rhs): ValDef)
+ locally(ValDef(sym): ValDef)
+ locally(AnnotatedType(anns, tpe): AnnotatedType)
+ locally(BoundedWildcardType(??? : TypeBounds): BoundedWildcardType)
+ locally(TypeBounds(tpe, tpe): TypeBounds)
+ locally(MethodType(params, tpe): MethodType)
+ locally(RefinedType(tpes, decls): RefinedType)
+ locally(RefinedType(tpes, decls, sym): RefinedType)
+ locally(ClassInfoType(tpes, decls, sym): ClassInfoType)
+ locally(SingleType(tpe, sym): Type)
+ locally(TypeRef(tpe, sym, tpes): Type)
+ locally(ExistentialType(syms, tpe): ExistentialType)
+ locally(NullaryMethodType(tpe): NullaryMethodType)
+ locally(ThisType(sym): Type)
+ locally(SuperType(tpe, tpe): Type)
+ locally(PolyType(syms, tpe): PolyType)
+ locally(ConstantType(const): ConstantType)
+ locally(sym.asFreeTerm: FreeTermSymbol)
+ locally(sym.asFreeType: FreeTypeSymbol)
+ locally(sym.attachments: Attachments { type Pos = Position })
+ locally(tree.attachments: Attachments { type Pos = Position })
+ locally(captureVariable(sym): Unit)
+ locally(capturedVariableType(sym): Type)
+ locally(sym.deSkolemize: Symbol)
+ locally(tree.defineType(tpe): Tree)
+ locally(existentialAbstraction(tparams, tpe): Type)
+ locally(tree.freeTerms: List[FreeTermSymbol])
+ locally(tree.freeTypes: List[FreeTypeSymbol])
+ locally(intersectionType(tpes): Type)
+ locally(intersectionType(tpes, sym): Type)
+ locally(sym.isErroneous: Boolean)
+ locally(sym.isFreeTerm: Boolean)
+ locally(sym.isFreeType: Boolean)
+ locally(sym.isLocal: Boolean)
+ locally(sym.isOverride: Boolean)
+ locally(tsym.isSkolem: Boolean)
+ locally(manifestToTypeTag(mirror, manifest): scala.reflect.api.Universe#TypeTag[Int])
+ locally(treeBuild.mkAttributedIdent(sym): RefTree)
+ locally(treeBuild.mkAttributedQualifier(tpe): Tree)
+ locally(treeBuild.mkAttributedQualifier(tpe, sym): Tree)
+ locally(treeBuild.mkAttributedRef(tpe, sym): RefTree)
+ locally(treeBuild.mkAttributedRef(sym): RefTree)
+ locally(treeBuild.mkAttributedSelect(tree, sym): RefTree)
+ locally(treeBuild.mkAttributedThis(sym): This)
+ locally(mkImporter(scala.reflect.runtime.universe): Importer{val from: scala.reflect.runtime.universe.type})
+ locally(treeBuild.mkMethodCall(sym, trees): Tree)
+ locally(treeBuild.mkMethodCall(sym, tpes, trees): Tree)
+ locally(treeBuild.mkMethodCall(sym, name, trees): Tree)
+ locally(treeBuild.mkMethodCall(sym, name, tpes, trees): Tree)
+ locally(treeBuild.mkMethodCall(tree, sym, tpes, trees): Tree)
+ locally(treeBuild.mkMethodCall(tree, trees): Tree)
+ locally(treeBuild.mkMethodCall(tree, tpes, trees): Tree)
+ locally(treeBuild.mkNullaryCall(sym, tpes): Tree)
+ locally(treeBuild.mkRuntimeUniverseRef: Tree)
+ locally(treeBuild.mkUnattributedRef(name): RefTree)
+ locally(treeBuild.mkUnattributedRef(sym): RefTree)
+ locally(sym.newClassSymbol(tyname, pos, flags): ClassSymbol)
+ locally(sym.newMethodSymbol(tename, pos, flags): MethodSymbol)
+ locally(sym.newModuleAndClassSymbol(name, pos, flags): (ModuleSymbol, ClassSymbol))
+ locally(newScopeWith(sym, sym, sym): Scope)
+ locally(sym.newTermSymbol(tename, pos, flags): TermSymbol)
+ locally(sym.newTypeSymbol(tyname, pos, flags): TypeSymbol)
+ locally(polyType(tparams, tpe): Type)
+ locally(sym.pos: Position)
+ locally((tree.pos = pos): Unit)
+ locally(referenceCapturedVariable(sym): Tree)
+ locally(refinedType(tpes, sym): Type)
+ locally(refinedType(tpes, sym, decls, pos): Type)
+ locally(sym.removeAttachment[Int]: Symbol)
+ locally(tree.removeAttachment[Int]: Tree)
+ locally(sym.setAnnotations(ann, ann, ann): Symbol)
+ locally(sym.setName(name): Symbol)
+ locally(ttree.setOriginal(tree): TypeTree)
+ locally(tree.setPos(pos): Tree)
+ locally(sym.setPrivateWithin(sym): Symbol)
+ locally(tree.setSymbol(sym): Tree)
+ locally(tree.setType(tpe): Tree)
+ locally(sym.setTypeSignature(tpe): Symbol)
+ locally(singleType(tpe, sym): Type)
+ locally(tree.substituteSymbols(syms, syms): Tree)
+ locally(tree.substituteThis(sym, tree): Tree)
+ locally(tree.substituteTypes(syms, tpes): Tree)
+ locally((tree.symbol = sym): Unit)
+ locally((tree.tpe = tpe): Unit)
+ locally(typeRef(tpe, sym, tpes): Type)
+ locally(typeTagToManifest(mirror, tag): Manifest[Int])
+ locally(sym.updateAttachment(42): Symbol)
+ locally(tree.updateAttachment(42): Tree)
+ locally(FreeTermSymbolTag: ClassTag[FreeTermSymbol])
+ locally((??? : FreeTermSymbol).origin)
+ locally((??? : FreeTermSymbol).value)
+ locally(FreeTypeSymbolTag: ClassTag[FreeTypeSymbol])
+ locally((??? : FreeTypeSymbol).origin)
+ locally(ReferenceToBoxedTag: ClassTag[ReferenceToBoxed])
+ locally(build: BuildApi)
+ locally(ReferenceToBoxed(??? : Ident): ReferenceToBoxed)
+ locally((??? : ReferenceToBoxed).ident: Tree)
+ locally(ReferenceToBoxed.unapply(???): Option[Ident])
+ locally(build.selectType(sym, str): TypeSymbol)
+ locally(build.selectTerm(sym, str): TermSymbol)
+ locally(build.selectOverloadedMethod(sym, str, i): MethodSymbol)
+ locally(build.newNestedSymbol(sym, name, pos, flags, b): Symbol)
+ locally(build.newFreeTerm(str, i): FreeTermSymbol)
+ locally(build.newFreeTerm(str, i, flags, str): FreeTermSymbol)
+ locally(build.newFreeType(str): FreeTypeSymbol)
+ locally(build.newFreeType(str, flags, str): FreeTypeSymbol)
+ locally(build.setTypeSignature(sym, tpe): Symbol)
+ locally(build.setAnnotations(sym, anns): Symbol)
+ locally(build.flagsFromBits(??? : Long): FlagSet)
+ locally(build.emptyValDef: ValDef)
+ locally(build.This(sym): Tree)
+ locally(build.Select(tree, sym): Select)
+ locally(build.Ident(sym): Ident)
+ locally(build.TypeTree(tpe): TypeTree)
+ locally(build.thisPrefix(sym): Type)
+ locally(build.setType(tree, tpe): Tree)
+ locally(build.setSymbol(tree, sym): Tree)
+} \ No newline at end of file
diff --git a/test/files/pos/reflection-compat-ru.check b/test/files/pos/reflection-compat-ru.check
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/test/files/pos/reflection-compat-ru.check
diff --git a/test/files/pos/reflection-compat-ru.scala b/test/files/pos/reflection-compat-ru.scala
new file mode 100644
index 0000000000..9ff72d1cf0
--- /dev/null
+++ b/test/files/pos/reflection-compat-ru.scala
@@ -0,0 +1,135 @@
+object Test extends App {
+ import scala.reflect.runtime.universe._
+ import scala.reflect.ClassTag
+ import compat._
+
+ val tree: Tree = ???
+ val ttree: TypeTree = ???
+ val stree: SymTree = ???
+ val trees: List[Tree] = ???
+ val mods: Modifiers = ???
+ val impl: Template = ???
+ val vparamss: List[List[ValDef]] = ???
+ val rhs: Tree = ???
+ val sym: Symbol = ???
+ val tsym: TypeSymbol = ???
+ val syms: List[Symbol] = ???
+ val params: List[Symbol] = ???
+ val tparams: List[Symbol] = ???
+ val tpe: Type = ???
+ val tpes: List[Type] = ???
+ val manifest: Manifest[Int] = ???
+ val tag: TypeTag[Int] = ???
+ val mirror: Mirror = ???
+ val decls: Scope = ???
+ val pos: Position = ???
+ val ann: Annotation = ???
+ val anns: List[Annotation] = ???
+ val const: Constant = ???
+ val name: Name = ???
+ val tyname: TypeName = ???
+ val tename: TermName = ???
+ val flags: FlagSet = ???
+ val str: String = ???
+ val i: Int = ???
+ val b: Boolean = ???
+
+ // abstract class BuildApi
+ // abstract class ReferenceToBoxedExtractor
+ // abstract trait AttachableApi
+ // abstract trait FreeTermSymbolApi
+ // abstract trait FreeTypeSymbolApi
+ // abstract trait IdentContextApi
+ // abstract trait ReferenceToBoxedApi
+ // abstract trait SymTreeContextApi
+ // abstract trait SymbolContextApi
+ // abstract trait TreeContextApi
+ // abstract trait TypeTreeContextApi
+ locally(ClassDef(sym, impl): ClassDef)
+ locally(DefDef(sym, mods, vparamss, rhs): DefDef)
+ locally(DefDef(sym, vparamss, rhs): DefDef)
+ locally(DefDef(sym, mods, rhs): DefDef)
+ locally(DefDef(sym, rhs): DefDef)
+ locally(DefDef(sym, (??? : List[List[Symbol]] => Tree)): DefDef)
+ locally(LabelDef(sym, params, rhs): LabelDef)
+ locally(ModuleDef(sym, impl): ModuleDef)
+ locally(TypeDef(sym, rhs): TypeDef)
+ locally(TypeDef(sym): TypeDef)
+ locally(ValDef(sym, rhs): ValDef)
+ locally(ValDef(sym): ValDef)
+ locally(AnnotatedType(anns, tpe): AnnotatedType)
+ locally(BoundedWildcardType(??? : TypeBounds): BoundedWildcardType)
+ locally(TypeBounds(tpe, tpe): TypeBounds)
+ locally(MethodType(params, tpe): MethodType)
+ locally(RefinedType(tpes, decls): RefinedType)
+ locally(RefinedType(tpes, decls, sym): RefinedType)
+ locally(ClassInfoType(tpes, decls, sym): ClassInfoType)
+ locally(SingleType(tpe, sym): Type)
+ locally(TypeRef(tpe, sym, tpes): Type)
+ locally(ExistentialType(syms, tpe): ExistentialType)
+ locally(NullaryMethodType(tpe): NullaryMethodType)
+ locally(ThisType(sym): Type)
+ locally(SuperType(tpe, tpe): Type)
+ locally(PolyType(syms, tpe): PolyType)
+ locally(ConstantType(const): ConstantType)
+ locally(sym.asFreeTerm: FreeTermSymbol)
+ locally(sym.asFreeType: FreeTypeSymbol)
+ locally(existentialAbstraction(tparams, tpe): Type)
+ locally(tree.freeTerms: List[FreeTermSymbol])
+ locally(tree.freeTypes: List[FreeTypeSymbol])
+ locally(intersectionType(tpes): Type)
+ locally(intersectionType(tpes, sym): Type)
+ locally(sym.isErroneous: Boolean)
+ locally(sym.isFreeTerm: Boolean)
+ locally(sym.isFreeType: Boolean)
+ locally(sym.isLocal: Boolean)
+ locally(sym.isOverride: Boolean)
+ locally(tsym.isSkolem: Boolean)
+ locally(manifestToTypeTag(mirror, manifest): scala.reflect.api.Universe#TypeTag[Int])
+ locally(mkImporter(scala.reflect.runtime.universe): Importer{val from: scala.reflect.runtime.universe.type})
+ locally(sym.newClassSymbol(tyname, pos, flags): ClassSymbol)
+ locally(sym.newMethodSymbol(tename, pos, flags): MethodSymbol)
+ locally(sym.newModuleAndClassSymbol(name, pos, flags): (ModuleSymbol, ClassSymbol))
+ locally(newScopeWith(sym, sym, sym): Scope)
+ locally(sym.newTermSymbol(tename, pos, flags): TermSymbol)
+ locally(sym.newTypeSymbol(tyname, pos, flags): TypeSymbol)
+ locally(polyType(tparams, tpe): Type)
+ locally(sym.pos: Position)
+ locally(refinedType(tpes, sym): Type)
+ locally(refinedType(tpes, sym, decls, pos): Type)
+ locally(singleType(tpe, sym): Type)
+ locally(tree.substituteSymbols(syms, syms): Tree)
+ locally(tree.substituteThis(sym, tree): Tree)
+ locally(tree.substituteTypes(syms, tpes): Tree)
+ locally(typeRef(tpe, sym, tpes): Type)
+ locally(typeTagToManifest(mirror, tag): Manifest[Int])
+ locally(FreeTermSymbolTag: ClassTag[FreeTermSymbol])
+ locally((??? : FreeTermSymbol).origin)
+ locally((??? : FreeTermSymbol).value)
+ locally(FreeTypeSymbolTag: ClassTag[FreeTypeSymbol])
+ locally((??? : FreeTypeSymbol).origin)
+ locally(ReferenceToBoxedTag: ClassTag[ReferenceToBoxed])
+ locally(build: BuildApi)
+ locally(ReferenceToBoxed(??? : Ident): ReferenceToBoxed)
+ locally((??? : ReferenceToBoxed).ident: Tree)
+ locally(ReferenceToBoxed.unapply(???): Option[Ident])
+ locally(build.selectType(sym, str): TypeSymbol)
+ locally(build.selectTerm(sym, str): TermSymbol)
+ locally(build.selectOverloadedMethod(sym, str, i): MethodSymbol)
+ locally(build.newNestedSymbol(sym, name, pos, flags, b): Symbol)
+ locally(build.newFreeTerm(str, i): FreeTermSymbol)
+ locally(build.newFreeTerm(str, i, flags, str): FreeTermSymbol)
+ locally(build.newFreeType(str): FreeTypeSymbol)
+ locally(build.newFreeType(str, flags, str): FreeTypeSymbol)
+ locally(build.setTypeSignature(sym, tpe): Symbol)
+ locally(build.setAnnotations(sym, anns): Symbol)
+ locally(build.flagsFromBits(??? : Long): FlagSet)
+ locally(build.emptyValDef: ValDef)
+ locally(build.This(sym): Tree)
+ locally(build.Select(tree, sym): Select)
+ locally(build.Ident(sym): Ident)
+ locally(build.TypeTree(tpe): TypeTree)
+ locally(build.thisPrefix(sym): Type)
+ locally(build.setType(tree, tpe): Tree)
+ locally(build.setSymbol(tree, sym): Tree)
+} \ No newline at end of file
diff --git a/test/files/run/reflection-tags.scala b/test/files/run/reflection-tags.scala
index 21ff2c0efb..3d7c7b2a0a 100644
--- a/test/files/run/reflection-tags.scala
+++ b/test/files/run/reflection-tags.scala
@@ -7,6 +7,7 @@ object Test extends App {
typeMembers = typeMembers.filter(_.name != TypeName("Importer")) // deprecated
typeMembers = typeMembers.filter(_.name != TypeName("Internal")) // internal
typeMembers = typeMembers.filter(_.name != TypeName("Compat")) // internal
+ typeMembers = typeMembers.filter(_.name != TypeName("BuildApi")) // deprecated
val tags = typeOf[scala.reflect.api.Universe].members.filter(sym => sym.isImplicit).toList
typeMembers.foreach(_.info)
diff --git a/test/files/run/t8190.scala b/test/files/run/t8190.scala
index d61fa8c01c..17ff83c714 100644
--- a/test/files/run/t8190.scala
+++ b/test/files/run/t8190.scala
@@ -113,6 +113,7 @@ object Test extends App with Overloads {
types = types.filter(_ != "Importer") // deprecated
types = types.filter(_ != "Internal") // internal
types = types.filter(_ != "Compat") // internal
+ types = types.filter(_ != "BuildApi") // deprecated
val diff = types.toList diff buf.toList
println("uncovered type members: " + diff)
}