diff options
Diffstat (limited to 'src/compiler/scala/tools/nsc/symtab/Definitions.scala')
-rw-r--r-- | src/compiler/scala/tools/nsc/symtab/Definitions.scala | 40 |
1 files changed, 33 insertions, 7 deletions
diff --git a/src/compiler/scala/tools/nsc/symtab/Definitions.scala b/src/compiler/scala/tools/nsc/symtab/Definitions.scala index 7d624d8289..6131d145f2 100644 --- a/src/compiler/scala/tools/nsc/symtab/Definitions.scala +++ b/src/compiler/scala/tools/nsc/symtab/Definitions.scala @@ -227,6 +227,11 @@ trait Definitions { } val MaxTupleArity, MaxProductArity, MaxFunctionArity = 22 + /** The maximal dimensions of a generic array creation. + * I.e. new Array[Array[Array[Array[Array[T]]]]] creates a 5 times + * nested array. More is not allowed. + */ + val MaxArrayDims = 5 lazy val TupleClass = mkArityArray("Tuple", MaxTupleArity) lazy val ProductClass = mkArityArray("Product", MaxProductArity) lazy val FunctionClass = mkArityArray("Function", MaxFunctionArity, 0) @@ -673,17 +678,15 @@ trait Definitions { def isValueClass(sym: Symbol): Boolean = (sym eq UnitClass) || (boxedClass contains sym) - /** Is symbol a value class? */ + /** Is symbol a numeric value class? */ def isNumericValueClass(sym: Symbol): Boolean = (sym ne BooleanClass) && (boxedClass contains sym) - // !!! todo comment & rename! - def isValueType(sym: Symbol) = + // !!! todo merge with isValueClass + def isValueType(sym: Symbol) = { + assert(isValueClass(sym) || !unboxMethod.contains(sym)) isValueClass(sym) || unboxMethod.contains(sym) - - /** Is symbol a value or array class? */ - def isUnboxedClass(sym: Symbol): Boolean = - isValueType(sym) || !settings.newArrays.value && sym == ArrayClass + } def signature(tp: Type): String = { def erasure(tp: Type): Type = tp match { @@ -751,6 +754,29 @@ trait Definitions { String_+ = newMethod( StringClass, "+", anyparam, StringClass.typeConstructor) setFlag FINAL + val forced = List( // force initialization of every symbol that is enetred as a side effect + AnnotationDefaultAttr, + RepeatedParamClass, + JavaRepeatedParamClass, + ByNameParamClass, + UnitClass, + ByteClass, + ShortClass, + CharClass, + IntClass, + LongClass, + FloatClass, + DoubleClass, + BooleanClass, + AnyClass, + AnyRefClass, + AnyValClass, + NullClass, + NothingClass, + SingletonClass, + EqualsPatternClass + ) + // #2264 var tmp = AnnotationDefaultAttr tmp = RepeatedParamClass // force initalization |