From 9b8bcf9d19b44610c0a1c676947b445a4da42368 Mon Sep 17 00:00:00 2001 From: Eugene Burmako Date: Sat, 15 Feb 2014 12:49:20 +0100 Subject: some extension methods that I forgot to expose Thanks, sbt. Once I'm done with sbt, I'll write up tests that ensure that I haven't forgotten anything. --- src/reflect/scala/reflect/api/Internals.scala | 32 ++++++++++++++++++++++ src/reflect/scala/reflect/internal/Internals.scala | 2 ++ src/reflect/scala/reflect/macros/Universe.scala | 12 ++++++++ 3 files changed, 46 insertions(+) (limited to 'src/reflect') diff --git a/src/reflect/scala/reflect/api/Internals.scala b/src/reflect/scala/reflect/api/Internals.scala index c2f7f411b9..be704c1d1b 100644 --- a/src/reflect/scala/reflect/api/Internals.scala +++ b/src/reflect/scala/reflect/api/Internals.scala @@ -1103,5 +1103,37 @@ trait Internals { self: Universe => @deprecated("Use `internal.deSkolemize` instead", "2.11.0") def deSkolemize: Symbol = internal.deSkolemize(symbol) } + + /** @see [[InternalApi.singleType]] */ + @deprecated("Use `internal.singleType` instead", "2.11.0") + def singleType(pre: Type, sym: Symbol): Type = internal.singleType(pre, sym) + + /** @see [[InternalApi.refinedType]] */ + @deprecated("Use `internal.refinedType` instead", "2.11.0") + def refinedType(parents: List[Type], owner: Symbol, decls: Scope, pos: Position): Type = internal.refinedType(parents, owner, decls, pos) + + /** @see [[InternalApi.refinedType]] */ + @deprecated("Use `internal.refinedType` instead", "2.11.0") + def refinedType(parents: List[Type], owner: Symbol): Type = internal.refinedType(parents, owner) + + /** @see [[InternalApi.typeRef]] */ + @deprecated("Use `internal.typeRef` instead", "2.11.0") + def typeRef(pre: Type, sym: Symbol, args: List[Type]): Type = internal.typeRef(pre, sym, args) + + /** @see [[InternalApi.intersectionType]] */ + @deprecated("Use `internal.intersectionType` instead", "2.11.0") + def intersectionType(tps: List[Type]): Type = internal.intersectionType(tps) + + /** @see [[InternalApi.intersectionType]] */ + @deprecated("Use `internal.intersectionType` instead", "2.11.0") + def intersectionType(tps: List[Type], owner: Symbol): Type = internal.intersectionType(tps, owner) + + /** @see [[InternalApi.polyType]] */ + @deprecated("Use `internal.polyType` instead", "2.11.0") + def polyType(tparams: List[Symbol], tpe: Type): Type = internal.polyType(tparams, tpe) + + /** @see [[InternalApi.existentialAbstraction]] */ + @deprecated("Use `internal.existentialAbstraction` instead", "2.11.0") + def existentialAbstraction(tparams: List[Symbol], tpe0: Type): Type = internal.existentialAbstraction(tparams, tpe0) } } diff --git a/src/reflect/scala/reflect/internal/Internals.scala b/src/reflect/scala/reflect/internal/Internals.scala index deda273cfd..e8bf842e6e 100644 --- a/src/reflect/scala/reflect/internal/Internals.scala +++ b/src/reflect/scala/reflect/internal/Internals.scala @@ -136,6 +136,8 @@ trait Internals extends api.Internals { override implicit def scopeDecorator[T <: Scope](scope: T): ScopeDecorator[T] = new MacroScopeDecoratorApi[T](scope) override type TreeDecorator[T <: Tree] = MacroTreeDecoratorApi[T] override implicit def treeDecorator[T <: Tree](tree: T): TreeDecorator[T] = new MacroTreeDecoratorApi[T](tree) + override type TypeTreeDecorator[T <: TypeTree] = MacroTypeTreeDecoratorApi[T] + override implicit def typeTreeDecorator[T <: TypeTree](tt: T): TypeTreeDecorator[T] = new MacroTypeTreeDecoratorApi[T](tt) override type SymbolDecorator[T <: Symbol] = MacroSymbolDecoratorApi[T] override implicit def symbolDecorator[T <: Symbol](symbol: T): SymbolDecorator[T] = new MacroSymbolDecoratorApi[T](symbol) override type TypeDecorator[T <: Type] = TypeDecoratorApi[T] diff --git a/src/reflect/scala/reflect/macros/Universe.scala b/src/reflect/scala/reflect/macros/Universe.scala index d368cc6c96..6861a80c47 100644 --- a/src/reflect/scala/reflect/macros/Universe.scala +++ b/src/reflect/scala/reflect/macros/Universe.scala @@ -205,6 +205,18 @@ abstract class Universe extends scala.reflect.api.Universe { def setSymbol(sym: Symbol): T = internal.setSymbol(tree, sym) } + /** Extension methods for typetrees */ + type TypeTreeDecorator[T <: TypeTree] <: MacroTypeTreeDecoratorApi[T] + + /** @see [[TypeTreeDecorator]] */ + implicit def typeTreeDecorator[T <: TypeTree](tt: T): TypeTreeDecorator[T] + + /** @see [[TypeTreeDecorator]] */ + class MacroTypeTreeDecoratorApi[T <: TypeTree](val tt: T) { + /** @see [[internal.setOriginal]] */ + def setOriginal(tree: Tree): TypeTree = internal.setOriginal(tt, tree) + } + /** @inheritdoc */ override type SymbolDecorator[T <: Symbol] <: MacroSymbolDecoratorApi[T] -- cgit v1.2.3