summaryrefslogtreecommitdiff
path: root/sources/scalac/transformer
diff options
context:
space:
mode:
authorschinz <schinz@epfl.ch>2005-01-25 10:24:16 +0000
committerschinz <schinz@epfl.ch>2005-01-25 10:24:16 +0000
commit402ee863034f31f45a76759e6e51c2713cb63af0 (patch)
treeb188cfe37e5185113ec9dbf5ea6a2597f8d76a51 /sources/scalac/transformer
parent042b3c397809ae173d426ba5098a40c3f11437e9 (diff)
downloadscala-402ee863034f31f45a76759e6e51c2713cb63af0.tar.gz
scala-402ee863034f31f45a76759e6e51c2713cb63af0.tar.bz2
scala-402ee863034f31f45a76759e6e51c2713cb63af0.zip
- added support for ThisTypes
Diffstat (limited to 'sources/scalac/transformer')
-rw-r--r--sources/scalac/transformer/TypesAsValuesPhase.java10
1 files changed, 10 insertions, 0 deletions
diff --git a/sources/scalac/transformer/TypesAsValuesPhase.java b/sources/scalac/transformer/TypesAsValuesPhase.java
index b78a8a8f78..6c48e353d5 100644
--- a/sources/scalac/transformer/TypesAsValuesPhase.java
+++ b/sources/scalac/transformer/TypesAsValuesPhase.java
@@ -790,6 +790,9 @@ public class TypesAsValuesPhase extends Phase {
case SingleType(Type pre, Symbol sym):
return singleType(pos, (Type.SingleType)tp);
+ case ThisType(Symbol sym):
+ return thisType(pos, sym);
+
case CompoundType(Type[] parts, Scope members):
return compoundType(pos, parts, members, owner, env);
@@ -819,6 +822,13 @@ public class TypesAsValuesPhase extends Phase {
return gen.New(pos, gen.mkApply_V(constr, args));
}
+ private Tree thisType(int pos, Symbol sym) {
+ Tree constr =
+ gen.mkPrimaryConstructorGlobalRef(pos, defs.SINGLETYPE_CLASS);
+ Tree[] args = new Tree[] { gen.This(pos, sym) };
+ return gen.New(pos, gen.mkApply_V(constr, args));
+ }
+
private Tree singleType(int pos, Type.SingleType tp) {
Tree constr =
gen.mkPrimaryConstructorGlobalRef(pos, defs.SINGLETYPE_CLASS);