summaryrefslogtreecommitdiff
path: root/sources/scalac/ast
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2003-03-31 19:16:21 +0000
committerMartin Odersky <odersky@gmail.com>2003-03-31 19:16:21 +0000
commit5c510296ee4722412840f1a6c5eafce9051f69ed (patch)
tree20466a6d8bb0499d08e8cd616c4957aace7743bc /sources/scalac/ast
parenta8f9240799ff6cb13a7de66e9e626ebc3321cc83 (diff)
downloadscala-5c510296ee4722412840f1a6c5eafce9051f69ed.tar.gz
scala-5c510296ee4722412840f1a6c5eafce9051f69ed.tar.bz2
scala-5c510296ee4722412840f1a6c5eafce9051f69ed.zip
*** empty log message ***
Diffstat (limited to 'sources/scalac/ast')
-rw-r--r--sources/scalac/ast/TreeGen.java18
1 files changed, 16 insertions, 2 deletions
diff --git a/sources/scalac/ast/TreeGen.java b/sources/scalac/ast/TreeGen.java
index ecb4705de5..18275af3a7 100644
--- a/sources/scalac/ast/TreeGen.java
+++ b/sources/scalac/ast/TreeGen.java
@@ -56,6 +56,14 @@ public class TreeGen implements Kinds, Modifiers {
/*************************************************************************/
/** METHODS **/
+ private Type deref(Type tp) {
+ switch (tp) {
+ case PolyType(Symbol[] tparams, Type restp):
+ if (tparams.length == 0) return restp;
+ }
+ return tp;
+ }
+
/** Create a dummy symbol to be used for templates.
*/
public Symbol localDummy(int pos, Symbol owner) {
@@ -157,6 +165,12 @@ public class TreeGen implements Kinds, Modifiers {
setType(definitions.BOOLEAN_TYPE);
}
+ /** Build a string literal
+ */
+ public Tree mkStringLit(int pos, String str) {
+ return make.Literal(pos, str).setType(definitions.JAVA_STRING_TYPE);
+ }
+
/** Build a tree to be used as a base class constructor for a template.
*/
public Tree mkParentConstr(int pos, Type parentType) {
@@ -381,7 +395,7 @@ public class TreeGen implements Kinds, Modifiers {
Type symtype = qual.type.memberType(sym);
Global.instance.prevPhase();
return make.Select(pos, qual, sym.name)
- .setSymbol(sym).setType(symtype);
+ .setSymbol(sym).setType(deref(symtype));
}
public Tree Select(Tree qual, Symbol sym) {
@@ -401,7 +415,7 @@ public class TreeGen implements Kinds, Modifiers {
Type symtype = sym.type();
Global.instance.prevPhase();
return make.Ident(pos, sym.name)
- .setSymbol(sym).setType(symtype);
+ .setSymbol(sym).setType(deref(symtype));
}
public Tree Ident(Symbol sym) {