summaryrefslogtreecommitdiff
path: root/src/reflect
diff options
context:
space:
mode:
authorEugene Burmako <xeno.by@gmail.com>2013-02-07 09:14:42 +0100
committerEugene Burmako <xeno.by@gmail.com>2013-10-18 17:48:51 +0200
commit544ae248aabaf919294f2aa375ebbd92b1c8757d (patch)
tree7a007e9103d68c8b6ee123d98cc4a39d33e5ed32 /src/reflect
parentd05566ca327103d61b071a5022be98f1f3f045f3 (diff)
downloadscala-544ae248aabaf919294f2aa375ebbd92b1c8757d.tar.gz
scala-544ae248aabaf919294f2aa375ebbd92b1c8757d.tar.bz2
scala-544ae248aabaf919294f2aa375ebbd92b1c8757d.zip
SI-7045 reflection now auto-initializes selfType
selfType joins the happy family of flags, annotations and privateWithin, which automatically trigger initialization, when used within runtime reflection.
Diffstat (limited to 'src/reflect')
-rw-r--r--src/reflect/scala/reflect/internal/Symbols.scala6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/reflect/scala/reflect/internal/Symbols.scala b/src/reflect/scala/reflect/internal/Symbols.scala
index a54a17901a..fd627b8fd3 100644
--- a/src/reflect/scala/reflect/internal/Symbols.scala
+++ b/src/reflect/scala/reflect/internal/Symbols.scala
@@ -110,10 +110,14 @@ trait Symbols extends api.Symbols { self: SymbolTable =>
children
}
+ def selfType = {
+ if (!isCompilerUniverse && needsInitialize(isFlagRelated = false, mask = 0)) initialize
+ typeOfThis
+ }
+
def baseClasses = info.baseClasses
def module = sourceModule
def thisPrefix: Type = thisType
- def selfType: Type = typeOfThis
def typeSignature: Type = { fullyInitializeSymbol(this); info }
def typeSignatureIn(site: Type): Type = { fullyInitializeSymbol(this); site memberInfo this }