summaryrefslogtreecommitdiff
path: root/sources
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2004-04-08 15:58:45 +0000
committerMartin Odersky <odersky@gmail.com>2004-04-08 15:58:45 +0000
commit8dd1635f7f4661e39eb9b77a56e14f92e0379786 (patch)
tree47f0e843fc04fd62aed9d4ae0006a7f9ab79768a /sources
parent34dca6ad930cd4bc8d3e6916364d7a75c9fe41fd (diff)
downloadscala-8dd1635f7f4661e39eb9b77a56e14f92e0379786.tar.gz
scala-8dd1635f7f4661e39eb9b77a56e14f92e0379786.tar.bz2
scala-8dd1635f7f4661e39eb9b77a56e14f92e0379786.zip
*** empty log message ***
Diffstat (limited to 'sources')
-rw-r--r--sources/scala/tools/scalac/typechecker/Analyzer.scala3
-rw-r--r--sources/scalac/ast/TreeGen.java6
2 files changed, 5 insertions, 4 deletions
diff --git a/sources/scala/tools/scalac/typechecker/Analyzer.scala b/sources/scala/tools/scalac/typechecker/Analyzer.scala
index e9b45b6c3e..3c0d37861c 100644
--- a/sources/scala/tools/scalac/typechecker/Analyzer.scala
+++ b/sources/scala/tools/scalac/typechecker/Analyzer.scala
@@ -575,7 +575,7 @@ class Analyzer(global: scalac_Global, descr: AnalyzerPhase) extends Transformer(
val vapp = transform(
make.Apply(tree.pos, vexpr, NewArray.Tree(tree)), mode, pt);
if (v.symtype.isObjectType()) {
- val tree1 = transform(tree.duplicate(), mode, pt);
+ val tree1 = gen.mkAsInstanceOf(tree.duplicate(), vapp.getType());
gen.If(
gen.Apply(
gen.Select(
@@ -1650,7 +1650,6 @@ class Analyzer(global: scalac_Global, descr: AnalyzerPhase) extends Transformer(
if (v != null) {
qual = applyView(
v, qual.setType(qual.getType().singleDeref()), EXPRmode, Type.AnyType);
- System.out.println("app view " + qual + ":" + qual.getType());//debug
sym = qual.getType().lookup(name);
assert(sym.kind != NONE);
} else {
diff --git a/sources/scalac/ast/TreeGen.java b/sources/scalac/ast/TreeGen.java
index 4abd940f9c..405f14d618 100644
--- a/sources/scalac/ast/TreeGen.java
+++ b/sources/scalac/ast/TreeGen.java
@@ -356,14 +356,16 @@ public class TreeGen implements Kinds, Modifiers, TypeTags {
*/
public Tree mkApplyTV(int pos, Tree fn, Type[] targs, Tree[] vargs) {
if (targs.length != 0) fn = TypeApply(pos, fn, mkTypes(pos, targs));
- return Apply(pos, fn, vargs);
+ if (vargs.length == 0 && fn.getType().isObjectType()) return fn;
+ else return Apply(pos, fn, vargs);
}
public Tree mkApplyTV(Tree fn, Type[] targs, Tree[] vargs) {
return mkApplyTV(fn.pos, fn, targs, vargs);
}
public Tree mkApplyTV(int pos, Tree fn, Tree[] targs, Tree[] vargs) {
if (targs.length != 0) fn = TypeApply(pos, fn, targs);
- return Apply(pos, fn, vargs);
+ if (vargs.length == 0 && fn.getType().isObjectType()) return fn;
+ else return Apply(pos, fn, vargs);
}
public Tree mkApplyTV(Tree fn, Tree[] targs, Tree[] vargs) {
return mkApplyTV(fn.pos, fn, targs, vargs);