Skip to content

Commit 7cfd3ca

Browse files
committed
Merge pull request #928 from dotty-staging/stdlib-definitions
Make Definitions survive recompilation of core definitions.
2 parents f8169b4 + 949c48e commit 7cfd3ca

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+756
-562
lines changed

src/dotty/tools/backend/jvm/CollectEntryPoints.scala

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -49,13 +49,10 @@ class CollectEntryPoints extends MiniPhaseTransform {
4949

5050
object CollectEntryPoints{
5151
def isJavaMainMethod(sym: Symbol)(implicit ctx: Context) = {
52-
val d = ctx.definitions
53-
val StringType = d.StringType
54-
5552
(sym.name == nme.main) && (sym.info match {
56-
case r@MethodType(_, List(d.ArrayType(t))) =>
57-
(t.widenDealias =:= StringType) && (
58-
r.resultType.widenDealias =:= d.UnitType)
53+
case r@MethodType(_, List(defn.ArrayOf(t))) =>
54+
(t.widenDealias =:= defn.StringType) && (
55+
r.resultType.widenDealias =:= defn.UnitType)
5956
case _ => false
6057
})
6158
}

src/dotty/tools/backend/jvm/DottyBackendInterface.scala

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -99,9 +99,6 @@ class DottyBackendInterface()(implicit ctx: Context) extends BackendInterface{
9999
val nme_PACKAGE: Name = StdNames.nme.PACKAGE
100100
val nme_EQEQ_LOCAL_VAR: Name = StdNames.nme.EQEQ_LOCAL_VAR
101101

102-
val BoxesRunTimeModule = ctx.requiredModule("scala.runtime.BoxesRunTime")
103-
val BoxesRunTimeClass = toDenot(BoxesRunTimeModule).moduleClass.asClass
104-
105102
// require LambdaMetafactory: scalac uses getClassIfDefined, but we need those always.
106103
override lazy val LambdaMetaFactory = ctx.requiredClass("java.lang.invoke.LambdaMetafactory")
107104
override lazy val MethodHandle = ctx.requiredClass("java.lang.invoke.MethodHandle")
@@ -133,29 +130,28 @@ class DottyBackendInterface()(implicit ctx: Context) extends BackendInterface{
133130
}
134131

135132
val hashMethodSym: Symbol = NoSymbol // used to dispatch ## on primitives to ScalaRuntime.hash. Should be implemented by a miniphase
136-
val externalEqualsNumNum: Symbol = ctx.requiredMethod(BoxesRunTimeClass, nme.equalsNumNum)
137-
lazy val externalEqualsNumChar: Symbol = ??? // ctx.requiredMethod(BoxesRunTimeClass, nme.equalsNumChar) // this method is private
138-
val externalEqualsNumObject: Symbol = ctx.requiredMethod(BoxesRunTimeClass, nme.equalsNumObject)
139-
val externalEquals: Symbol = BoxesRunTimeClass.info.decl(nme.equals_).suchThat(toDenot(_).info.firstParamTypes.size == 2).symbol
133+
val externalEqualsNumNum: Symbol = defn.BoxesRunTimeModule.requiredMethod(nme.equalsNumNum)
134+
lazy val externalEqualsNumChar: Symbol = ??? // ctx.requiredMethod(BoxesRunTimeTypeRef, nme.equalsNumChar) // this method is private
135+
val externalEqualsNumObject: Symbol = defn.BoxesRunTimeModule.requiredMethod(nme.equalsNumObject)
136+
val externalEquals: Symbol = defn.BoxesRunTimeClass.info.decl(nme.equals_).suchThat(toDenot(_).info.firstParamTypes.size == 2).symbol
140137
val MaxFunctionArity: Int = Definitions.MaxFunctionArity
141-
val FunctionClass: Array[Symbol] = defn.FunctionClass.asInstanceOf[Array[Symbol]]
142-
val AbstractFunctionClass: Array[Symbol] = defn.AbstractFunctionClass.asInstanceOf[Array[Symbol]]
138+
val FunctionClass: Array[Symbol] = defn.FunctionClassPerRun()
139+
val AbstractFunctionClass: Array[Symbol] = defn.AbstractFunctionClassPerRun()
143140
val PartialFunctionClass: Symbol = defn.PartialFunctionClass
144141
val AbstractPartialFunctionClass: Symbol = defn.AbstractPartialFunctionClass
145142
val String_valueOf: Symbol = defn.String_valueOf_Object
146-
lazy val Predef_classOf: Symbol = ctx.requiredMethod(toDenot(defn.ScalaPredefModule).moduleClass.asClass, nme.classOf)
143+
lazy val Predef_classOf: Symbol = defn.ScalaPredefModule.requiredMethod(nme.classOf)
147144

148145
lazy val AnnotationRetentionAttr = ctx.requiredClass("java.lang.annotation.Retention")
149146
lazy val AnnotationRetentionSourceAttr = ctx.requiredClass("java.lang.annotation.RetentionPolicy").linkedClass.requiredValue("SOURCE")
150147
lazy val AnnotationRetentionClassAttr = ctx.requiredClass("java.lang.annotation.RetentionPolicy").linkedClass.requiredValue("CLASS")
151148
lazy val AnnotationRetentionRuntimeAttr = ctx.requiredClass("java.lang.annotation.RetentionPolicy").linkedClass.requiredValue("RUNTIME")
152149
lazy val JavaAnnotationClass = ctx.requiredClass("java.lang.annotation.Annotation")
153150

154-
155-
def boxMethods: Map[Symbol, Symbol] = defn.ScalaValueClasses.map{x =>
151+
def boxMethods: Map[Symbol, Symbol] = defn.ScalaValueClasses().map{x => // @darkdimius Are you sure this should be a def?
156152
(x, Erasure.Boxing.boxMethod(x.asClass))
157153
}.toMap
158-
def unboxMethods: Map[Symbol, Symbol] = defn.ScalaValueClasses.map(x => (x, Erasure.Boxing.unboxMethod(x.asClass))).toMap
154+
def unboxMethods: Map[Symbol, Symbol] = defn.ScalaValueClasses().map(x => (x, Erasure.Boxing.unboxMethod(x.asClass))).toMap
159155

160156
private val mkArrayNames: Set[Name] = Set("Byte", "Float", "Char", "Double", "Boolean", "Unit", "Long", "Int", "Short", "Ref").map{ x=>
161157
("new" + x + "Array").toTermName

src/dotty/tools/backend/jvm/scalaPrimitives.scala

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ class DottyPrimitives(ctx: Context) {
6969
}
7070

7171
def elementType: Type = tpe.widenDealias match {
72-
case defn.ArrayType(el) => el
72+
case defn.ArrayOf(el) => el
7373
case JavaArrayType(el) => el
7474
case _ =>
7575
ctx.error(s"expected Array $tpe")
@@ -79,42 +79,42 @@ class DottyPrimitives(ctx: Context) {
7979
code match {
8080

8181
case APPLY =>
82-
elementType.classSymbol match {
83-
case defn.BooleanClass => ZARRAY_GET
84-
case defn.ByteClass => BARRAY_GET
85-
case defn.ShortClass => SARRAY_GET
86-
case defn.CharClass => CARRAY_GET
87-
case defn.IntClass => IARRAY_GET
88-
case defn.LongClass => LARRAY_GET
89-
case defn.FloatClass => FARRAY_GET
90-
case defn.DoubleClass => DARRAY_GET
91-
case _ => OARRAY_GET
82+
defn.scalaClassName(elementType) match {
83+
case tpnme.Boolean => ZARRAY_GET
84+
case tpnme.Byte => BARRAY_GET
85+
case tpnme.Short => SARRAY_GET
86+
case tpnme.Char => CARRAY_GET
87+
case tpnme.Int => IARRAY_GET
88+
case tpnme.Long => LARRAY_GET
89+
case tpnme.Float => FARRAY_GET
90+
case tpnme.Double => DARRAY_GET
91+
case _ => OARRAY_GET
9292
}
9393

9494
case UPDATE =>
95-
elementType.classSymbol match {
96-
case defn.BooleanClass => ZARRAY_SET
97-
case defn.ByteClass => BARRAY_SET
98-
case defn.ShortClass => SARRAY_SET
99-
case defn.CharClass => CARRAY_SET
100-
case defn.IntClass => IARRAY_SET
101-
case defn.LongClass => LARRAY_SET
102-
case defn.FloatClass => FARRAY_SET
103-
case defn.DoubleClass => DARRAY_SET
104-
case _ => OARRAY_SET
95+
defn.scalaClassName(elementType) match {
96+
case tpnme.Boolean => ZARRAY_SET
97+
case tpnme.Byte => BARRAY_SET
98+
case tpnme.Short => SARRAY_SET
99+
case tpnme.Char => CARRAY_SET
100+
case tpnme.Int => IARRAY_SET
101+
case tpnme.Long => LARRAY_SET
102+
case tpnme.Float => FARRAY_SET
103+
case tpnme.Double => DARRAY_SET
104+
case _ => OARRAY_SET
105105
}
106106

107107
case LENGTH =>
108-
elementType.classSymbol match {
109-
case defn.BooleanClass => ZARRAY_LENGTH
110-
case defn.ByteClass => BARRAY_LENGTH
111-
case defn.ShortClass => SARRAY_LENGTH
112-
case defn.CharClass => CARRAY_LENGTH
113-
case defn.IntClass => IARRAY_LENGTH
114-
case defn.LongClass => LARRAY_LENGTH
115-
case defn.FloatClass => FARRAY_LENGTH
116-
case defn.DoubleClass => DARRAY_LENGTH
117-
case _ => OARRAY_LENGTH
108+
defn.scalaClassName(elementType) match {
109+
case tpnme.Boolean => ZARRAY_LENGTH
110+
case tpnme.Byte => BARRAY_LENGTH
111+
case tpnme.Short => SARRAY_LENGTH
112+
case tpnme.Char => CARRAY_LENGTH
113+
case tpnme.Int => IARRAY_LENGTH
114+
case tpnme.Long => LARRAY_LENGTH
115+
case tpnme.Float => FARRAY_LENGTH
116+
case tpnme.Double => DARRAY_LENGTH
117+
case _ => OARRAY_LENGTH
118118
}
119119

120120
case _ =>

src/dotty/tools/dotc/Compiler.scala

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import core._
55
import Contexts._
66
import Periods._
77
import Symbols._
8+
import Types._
89
import Scopes._
910
import typer.{FrontEnd, Typer, Mode, ImportInfo, RefChecks}
1011
import reporting.{Reporter, ConsoleReporter}
@@ -112,8 +113,8 @@ class Compiler {
112113
.setMode(Mode.ImplicitsEnabled)
113114
.setTyperState(new MutableTyperState(ctx.typerState, rootReporter(ctx), isCommittable = true))
114115
ctx.definitions.init(start) // set context of definitions to start
115-
def addImport(ctx: Context, symf: () => Symbol) =
116-
ctx.fresh.setImportInfo(ImportInfo.rootImport(symf)(ctx))
116+
def addImport(ctx: Context, refFn: () => TermRef) =
117+
ctx.fresh.setImportInfo(ImportInfo.rootImport(refFn)(ctx))
117118
(start.setRunInfo(new RunInfo(start)) /: defn.RootImportFns)(addImport)
118119
}
119120

src/dotty/tools/dotc/ast/Desugar.scala

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -323,7 +323,7 @@ object desugar {
323323

324324
def anyRef = ref(defn.AnyRefAlias.typeRef)
325325
def productConstr(n: Int) = {
326-
val tycon = ref(defn.ProductNClass(n).typeRef)
326+
val tycon = scalaDot((tpnme.Product.toString + n).toTypeName)
327327
val targs = constrVparamss.head map (_.tpt)
328328
if (targs.isEmpty) tycon else AppliedTypeTree(tycon, targs)
329329
}
@@ -803,10 +803,10 @@ object desugar {
803803
makeBinop(l, op, r)
804804
case PostfixOp(t, op) =>
805805
if ((ctx.mode is Mode.Type) && op == nme.raw.STAR) {
806-
val seqClass = if (ctx.compilationUnit.isJava) defn.ArrayClass else defn.SeqClass
806+
val seqType = if (ctx.compilationUnit.isJava) defn.ArrayType else defn.SeqType
807807
Annotated(
808-
New(ref(defn.RepeatedAnnot.typeRef), Nil :: Nil),
809-
AppliedTypeTree(ref(seqClass.typeRef), t))
808+
New(ref(defn.RepeatedAnnotType), Nil :: Nil),
809+
AppliedTypeTree(ref(seqType), t))
810810
} else {
811811
assert(ctx.mode.isExpr || ctx.reporter.hasErrors, ctx.mode)
812812
Select(t, op)
@@ -818,22 +818,22 @@ object desugar {
818818
case Tuple(ts) =>
819819
if (unboxedPairs) {
820820
def PairTypeTree(l: Tree, r: Tree) =
821-
AppliedTypeTree(ref(defn.PairClass.typeRef), l :: r :: Nil)
821+
AppliedTypeTree(ref(defn.PairType), l :: r :: Nil)
822822
if (ctx.mode is Mode.Type) ts.reduceRight(PairTypeTree)
823823
else if (ts.isEmpty) unitLiteral
824824
else ts.reduceRight(Pair(_, _))
825825
}
826826
else {
827827
val arity = ts.length
828-
def tupleClass = defn.TupleClass(arity)
828+
def tupleTypeRef = defn.TupleType(arity)
829829
if (arity > Definitions.MaxTupleArity) {
830830
ctx.error(s"tuple too long (max allowed: ${Definitions.MaxTupleArity})", tree.pos)
831831
unitLiteral
832832
}
833833
else if (arity == 1) ts.head
834-
else if (ctx.mode is Mode.Type) AppliedTypeTree(ref(tupleClass.typeRef), ts)
834+
else if (ctx.mode is Mode.Type) AppliedTypeTree(ref(tupleTypeRef), ts)
835835
else if (arity == 0) unitLiteral
836-
else Apply(ref(tupleClass.companionModule.valRef), ts)
836+
else Apply(ref(tupleTypeRef.classSymbol.companionModule.valRef), ts)
837837
}
838838
case WhileDo(cond, body) =>
839839
// { <label> def while$(): Unit = if (cond) { body; while$() } ; while$() }

src/dotty/tools/dotc/ast/TreeInfo.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ trait TreeInfo[T >: Untyped <: Type] { self: Trees.Instance[T] =>
230230

231231
/** Does this CaseDef catch Throwable? */
232232
def catchesThrowable(cdef: CaseDef)(implicit ctx: Context) =
233-
catchesAllOf(cdef, defn.ThrowableClass.typeRef)
233+
catchesAllOf(cdef, defn.ThrowableType)
234234

235235
/** Does this CaseDef catch everything of a certain Type? */
236236
def catchesAllOf(cdef: CaseDef, threshold: Type)(implicit ctx: Context) =

src/dotty/tools/dotc/ast/tpd.scala

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package dotty.tools
22
package dotc
33
package ast
44

5-
import dotty.tools.dotc.transform.ExplicitOuter
5+
import dotty.tools.dotc.transform.{ExplicitOuter, Erasure}
66
import dotty.tools.dotc.typer.ProtoTypes.FunProtoTyped
77
import transform.SymUtils._
88
import core._
@@ -13,7 +13,6 @@ import config.Printers._
1313
import typer.Mode
1414
import collection.mutable
1515
import typer.ErrorReporting._
16-
import transform.Erasure
1716

1817
import scala.annotation.tailrec
1918

@@ -268,7 +267,7 @@ object tpd extends Trees.Instance[Type] with TypedTreeInfo {
268267
def AnonClass(parents: List[Type], fns: List[TermSymbol], methNames: List[TermName])(implicit ctx: Context): Block = {
269268
val owner = fns.head.owner
270269
val parents1 =
271-
if (parents.head.classSymbol.is(Trait)) defn.ObjectClass.typeRef :: parents
270+
if (parents.head.classSymbol.is(Trait)) defn.ObjectType :: parents
272271
else parents
273272
val cls = ctx.newNormalizedClassSymbol(owner, tpnme.ANON_FUN, Synthetic, parents1,
274273
coord = fns.map(_.pos).reduceLeft(_ union _))
@@ -376,7 +375,7 @@ object tpd extends Trees.Instance[Type] with TypedTreeInfo {
376375
newArr(elemClass.name.toString)
377376
else
378377
newArr("Ref").appliedToTypeTrees(
379-
TypeTree(defn.ArrayType(elemType)).withPos(typeArg.pos) :: Nil)
378+
TypeTree(defn.ArrayOf(elemType)).withPos(typeArg.pos) :: Nil)
380379
}
381380

382381
// ------ Creating typed equivalents of trees that exist only in untyped form -------
@@ -778,6 +777,27 @@ object tpd extends Trees.Instance[Type] with TypedTreeInfo {
778777
}
779778
else Assign(tree, rhs)
780779

780+
/** A tree in place of this tree that represents the class of type `tp`.
781+
* Contains special handling if the class is a primitive value class
782+
* and invokes a `default` method otherwise.
783+
*/
784+
def clsOf(tp: Type, default: => Tree)(implicit ctx: Context): Tree = {
785+
def TYPE(module: TermSymbol) =
786+
ref(module).select(nme.TYPE_).ensureConforms(tree.tpe).withPos(tree.pos)
787+
defn.scalaClassName(tp) match {
788+
case tpnme.Boolean => TYPE(defn.BoxedBooleanModule)
789+
case tpnme.Byte => TYPE(defn.BoxedByteModule)
790+
case tpnme.Short => TYPE(defn.BoxedShortModule)
791+
case tpnme.Char => TYPE(defn.BoxedCharModule)
792+
case tpnme.Int => TYPE(defn.BoxedIntModule)
793+
case tpnme.Long => TYPE(defn.BoxedLongModule)
794+
case tpnme.Float => TYPE(defn.BoxedFloatModule)
795+
case tpnme.Double => TYPE(defn.BoxedDoubleModule)
796+
case tpnme.Unit => TYPE(defn.BoxedUnitModule)
797+
case _ => default
798+
}
799+
}
800+
781801
// --- Higher order traversal methods -------------------------------
782802

783803
/** Apply `f` to each subtree of this tree */
@@ -843,14 +863,14 @@ object tpd extends Trees.Instance[Type] with TypedTreeInfo {
843863
val defn = ctx.definitions
844864
val prefix = args.take(selected.widen.paramTypess.head.size - 1)
845865
expectedType match {
846-
case defn.ArrayType(el) =>
866+
case defn.ArrayOf(el) =>
847867
lastParam.tpe match {
848-
case defn.ArrayType(el2) if el2 <:< el =>
868+
case defn.ArrayOf(el2) if el2 <:< el =>
849869
// we have a JavaSeqLiteral with a more precise type
850870
// we cannot construct a tree as JavaSeqLiteral infered to precise type
851871
// if we add typed than it would be both type-correct and
852872
// will pass Ycheck
853-
prefix ::: List(tpd.Typed(lastParam, TypeTree(defn.ArrayType(el))))
873+
prefix ::: List(tpd.Typed(lastParam, TypeTree(defn.ArrayOf(el))))
854874
case _ =>
855875
???
856876
}

src/dotty/tools/dotc/ast/untpd.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,9 @@ object untpd extends Trees.Instance[Untyped] with UntypedTreeInfo {
201201
def ref(tp: NamedType)(implicit ctx: Context): Tree =
202202
TypedSplice(tpd.ref(tp))
203203

204-
def scalaUnit(implicit ctx: Context) = ref(defn.UnitClass.typeRef)
204+
def rootDot(name: Name) = Select(Ident(nme.ROOTPKG), name)
205+
def scalaDot(name: Name) = Select(rootDot(nme.scala_), name)
206+
def scalaUnit = scalaDot(tpnme.Unit)
205207

206208
def makeConstructor(tparams: List[TypeDef], vparamss: List[List[ValDef]], rhs: Tree = EmptyTree)(implicit ctx: Context): DefDef =
207209
DefDef(nme.CONSTRUCTOR, tparams, vparamss, TypeTree(), rhs)

src/dotty/tools/dotc/config/JavaPlatform.scala

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,11 @@ class JavaPlatform extends Platform {
1919
}
2020

2121
// The given symbol is a method with the right name and signature to be a runnable java program.
22-
def isJavaMainMethod(sym: SymDenotation)(implicit ctx: Context) = {
23-
val dn = defn
22+
def isJavaMainMethod(sym: SymDenotation)(implicit ctx: Context) =
2423
(sym.name == nme.main) && (sym.info match {
25-
case t@MethodType(_, dn.ArrayType(el) :: Nil) => el =:= defn.StringType && (t.resultType isRef defn.UnitClass)
24+
case t@MethodType(_, defn.ArrayOf(el) :: Nil) => el =:= defn.StringType && (t.resultType isRef defn.UnitClass)
2625
case _ => false
2726
})
28-
}
2927

3028
// The given class has a main method.
3129
def hasJavaMainMethod(sym: Symbol)(implicit ctx: Context): Boolean =

src/dotty/tools/dotc/config/Printers.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,13 @@ object Printers {
2222
val implicitsDetailed: Printer = noPrinter
2323
val subtyping: Printer = noPrinter
2424
val unapp: Printer = noPrinter
25-
val completions = noPrinter
2625
val gadts = noPrinter
2726
val hk = noPrinter
2827
val variances = noPrinter
2928
val incremental = noPrinter
3029
val config = noPrinter
3130
val transforms = noPrinter
31+
val completions = noPrinter
3232
val cyclicErrors = noPrinter
3333
val pickling = noPrinter
3434
}

src/dotty/tools/dotc/core/Annotations.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,12 +91,12 @@ object Annotations {
9191

9292
def makeChild(sym: Symbol)(implicit ctx: Context) =
9393
deferred(defn.ChildAnnot,
94-
implicit ctx => New(defn.ChildAnnot.typeRef.appliedTo(sym.owner.thisType.select(sym.name, sym)), Nil))
94+
implicit ctx => New(defn.ChildAnnotType.appliedTo(sym.owner.thisType.select(sym.name, sym)), Nil))
9595
}
9696

9797
def ThrowsAnnotation(cls: ClassSymbol)(implicit ctx: Context) = {
9898
val tref = cls.typeRef
99-
Annotation(defn.ThrowsAnnot.typeRef.appliedTo(tref), Ident(tref))
99+
Annotation(defn.ThrowsAnnotType.appliedTo(tref), Ident(tref))
100100
}
101101

102102
/** A decorator that provides queries for specific annotations

src/dotty/tools/dotc/core/Constants.scala

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -54,17 +54,17 @@ object Constants {
5454
def isAnyVal = UnitTag <= tag && tag <= DoubleTag
5555

5656
def tpe(implicit ctx: Context): Type = tag match {
57-
case UnitTag => defn.UnitClass.typeRef
58-
case BooleanTag => defn.BooleanClass.typeRef
59-
case ByteTag => defn.ByteClass.typeRef
60-
case ShortTag => defn.ShortClass.typeRef
61-
case CharTag => defn.CharClass.typeRef
62-
case IntTag => defn.IntClass.typeRef
63-
case LongTag => defn.LongClass.typeRef
64-
case FloatTag => defn.FloatClass.typeRef
65-
case DoubleTag => defn.DoubleClass.typeRef
66-
case StringTag => defn.StringClass.typeRef
67-
case NullTag => defn.NullClass.typeRef
57+
case UnitTag => defn.UnitType
58+
case BooleanTag => defn.BooleanType
59+
case ByteTag => defn.ByteType
60+
case ShortTag => defn.ShortType
61+
case CharTag => defn.CharType
62+
case IntTag => defn.IntType
63+
case LongTag => defn.LongType
64+
case FloatTag => defn.FloatType
65+
case DoubleTag => defn.DoubleType
66+
case StringTag => defn.StringType
67+
case NullTag => defn.NullType
6868
case ClazzTag => defn.ClassType(typeValue)
6969
case EnumTag => defn.EnumType(symbolValue)
7070
}

0 commit comments

Comments
 (0)