summaryrefslogtreecommitdiff
path: root/sources
diff options
context:
space:
mode:
authorpaltherr <paltherr@epfl.ch>2003-10-13 15:43:36 +0000
committerpaltherr <paltherr@epfl.ch>2003-10-13 15:43:36 +0000
commit774bd9179ecc515902db63ef2ba7271e6d6d4a6e (patch)
tree8bcd236b0d46b796c821ac67337530947266d2a0 /sources
parenta87e39db1f901094e959fd2121b5d7afe98a9c6c (diff)
downloadscala-774bd9179ecc515902db63ef2ba7271e6d6d4a6e.tar.gz
scala-774bd9179ecc515902db63ef2ba7271e6d6d4a6e.tar.bz2
scala-774bd9179ecc515902db63ef2ba7271e6d6d4a6e.zip
- Addded Definitions.PATTERN_WILDCARD
- Removed Names.WILDCARD - Added Names.PATTERN_WILDCARD - Added Names.IMPORT_WILDCARD - Replaced most uses of Names.PATTERN_WILDCARD by Definitions.PATTERN_WILDCARD - Removed TreeInfo.isWildcardPattern
Diffstat (limited to 'sources')
-rw-r--r--sources/scalac/ast/TreeInfo.java11
-rw-r--r--sources/scalac/ast/parser/Parser.java19
-rw-r--r--sources/scalac/ast/parser/PatternNormalizer.java2
-rw-r--r--sources/scalac/symtab/Definitions.java6
-rw-r--r--sources/scalac/transformer/UnCurry.java2
-rw-r--r--sources/scalac/transformer/matching/AlgebraicMatcher.java14
-rw-r--r--sources/scalac/transformer/matching/Autom2Scala.java4
-rw-r--r--sources/scalac/transformer/matching/BindingBerrySethi.java5
-rw-r--r--sources/scalac/transformer/matching/LeftTracerInScala.java4
-rw-r--r--sources/scalac/transformer/matching/PatternMatcher.java8
-rw-r--r--sources/scalac/transformer/matching/PatternTool.java1
-rw-r--r--sources/scalac/transformer/matching/RightTracerInScala.java4
-rw-r--r--sources/scalac/transformer/matching/TestRegTraverser.java8
-rw-r--r--sources/scalac/transformer/matching/TestRegTraverser.scala6
-rw-r--r--sources/scalac/typechecker/Analyzer.java22
-rw-r--r--sources/scalac/typechecker/AnalyzerPhase.java8
-rw-r--r--sources/scalac/typechecker/DeSugarize.java10
-rw-r--r--sources/scalac/typechecker/ImportList.java2
-rw-r--r--sources/scalac/typechecker/RefCheck.java2
-rw-r--r--sources/scalac/util/Names.java3
20 files changed, 72 insertions, 69 deletions
diff --git a/sources/scalac/ast/TreeInfo.java b/sources/scalac/ast/TreeInfo.java
index d0a8b41311..d7efc130cc 100644
--- a/sources/scalac/ast/TreeInfo.java
+++ b/sources/scalac/ast/TreeInfo.java
@@ -239,15 +239,4 @@ public class TreeInfo {
return false;
}
}
-
- /** returns true if the argument is a wildcard pattern
- */
- public static boolean isWildcardPattern( Tree tree ) {
- switch( tree ) {
- case Ident( Name n ):
- return ( n == Names.WILDCARD ) && ( tree.symbol() == null );
- default:
- return false;
- }
- }
}
diff --git a/sources/scalac/ast/parser/Parser.java b/sources/scalac/ast/parser/Parser.java
index 03231b150f..a25b219d3b 100644
--- a/sources/scalac/ast/parser/Parser.java
+++ b/sources/scalac/ast/parser/Parser.java
@@ -1136,7 +1136,7 @@ public class Parser implements Tokens {
rhs.pos, pat.duplicate(), Tree.Empty,
make.Literal(s.pos, Boolean.TRUE)),
(CaseDef)make.CaseDef(
- rhs.pos, make.Ident(rhs.pos, Names.WILDCARD), Tree.Empty,
+ rhs.pos, make.Ident(rhs.pos, Names.PATTERN_WILDCARD), Tree.Empty,
make.Literal(s.pos, Boolean.FALSE))})});
return make.PatDef(pos, 0, pat, rhs);
}
@@ -1222,10 +1222,11 @@ public class Parser implements Tokens {
Tree pattern2() {
Tree p = pattern3();
if (s.token == AT && TreeInfo.isVarPattern(p)) {
- if( !TreeInfo.isWildcardPattern(p) )
- return make.Bind(s.skipToken(), ((Ident)p).name, pattern3());
- else
- return pattern3();
+ switch (p) {
+ case Ident(Name name):
+ if (name == Names.PATTERN_WILDCARD) return pattern3();
+ }
+ return make.Bind(s.skipToken(), ((Ident)p).name, pattern3());
}
return p;
}
@@ -1316,7 +1317,7 @@ public class Parser implements Tokens {
}
return t;
case USCORE:
- return make.Ident(s.skipToken(), Names.WILDCARD);
+ return make.Ident(s.skipToken(), Names.PATTERN_WILDCARD);
case CHARLIT:
case INTLIT:
case LONGLIT:
@@ -1571,7 +1572,7 @@ public class Parser implements Tokens {
while (true) {
if (s.token == USCORE) {
s.nextToken();
- return make.Import(startpos, t, new Name[]{Names.WILDCARD});
+ return make.Import(startpos, t, new Name[]{Names.IMPORT_WILDCARD});
} else if (s.token == LBRACE) {
return make.Import(startpos, t, importSelectors());
} else {
@@ -1610,7 +1611,7 @@ public class Parser implements Tokens {
boolean importSelector(LinkedList/*<Name>*/ names) {
if (s.token == USCORE) {
s.nextToken();
- names.add(Names.WILDCARD);
+ names.add(Names.IMPORT_WILDCARD);
return true;
} else {
Name name = ident();
@@ -1619,7 +1620,7 @@ public class Parser implements Tokens {
s.nextToken();
if (s.token == USCORE) {
s.nextToken();
- names.add(Names.WILDCARD);
+ names.add(Names.IMPORT_WILDCARD);
} else {
names.add(ident());
}
diff --git a/sources/scalac/ast/parser/PatternNormalizer.java b/sources/scalac/ast/parser/PatternNormalizer.java
index 1a358f859f..b76fd11a3b 100644
--- a/sources/scalac/ast/parser/PatternNormalizer.java
+++ b/sources/scalac/ast/parser/PatternNormalizer.java
@@ -88,7 +88,7 @@ public class PatternNormalizer {
case Ident( Name var ):
if(( inAlt )
- &&( var != Names.WILDCARD )
+ &&( var != Names.PATTERN_WILDCARD )
&&( var.toString().lastIndexOf("$") == -1))
{
unit.error( t.pos,
diff --git a/sources/scalac/symtab/Definitions.java b/sources/scalac/symtab/Definitions.java
index f4dfe9560b..481da7c6d0 100644
--- a/sources/scalac/symtab/Definitions.java
+++ b/sources/scalac/symtab/Definitions.java
@@ -193,6 +193,8 @@ public class Definitions {
public Symbol BARBAR() { loadBooleanMembers(); return BARBAR; }
public Symbol AMPAMP() { loadBooleanMembers(); return AMPAMP; }
+ public final Symbol PATTERN_WILDCARD;
+
public Definitions(Global global) {
// a hack to make definitions accessible earlier to other
// components
@@ -427,6 +429,10 @@ public class Definitions {
Position.NOPOS, Names.ZERO, ROOT_CLASS, 0);
ZERO.setInfo(ALL_TYPE);
ROOT.members().enter(ZERO);
+
+ PATTERN_WILDCARD = new TermSymbol(
+ Position.NOPOS, Names.PATTERN_WILDCARD, Symbol.NONE, 0);
+ PATTERN_WILDCARD.setType(ALL_TYPE);
}
private Symbol newParameter(Symbol owner, Type tp) {
diff --git a/sources/scalac/transformer/UnCurry.java b/sources/scalac/transformer/UnCurry.java
index ce5ad8035c..bdc0072adc 100644
--- a/sources/scalac/transformer/UnCurry.java
+++ b/sources/scalac/transformer/UnCurry.java
@@ -177,7 +177,7 @@ public class UnCurry extends OwnerTransformer
if (name == TypeNames.WILDCARD_STAR) {
unit.error(tree.pos, " argument does not correspond to `*'-parameter");
return tree;
- } else if (TreeInfo.isWildcardPattern(tree)) {
+ } else if (tree.symbol() == global.definitions.PATTERN_WILDCARD) {
return tree;
} else {
return applyDef(super.transform(tree));
diff --git a/sources/scalac/transformer/matching/AlgebraicMatcher.java b/sources/scalac/transformer/matching/AlgebraicMatcher.java
index 57ba2ce7fe..0914cb7f15 100644
--- a/sources/scalac/transformer/matching/AlgebraicMatcher.java
+++ b/sources/scalac/transformer/matching/AlgebraicMatcher.java
@@ -189,10 +189,10 @@ public class AlgebraicMatcher extends PatternMatcher {
return res;
}
return mk.ConstrPat(tree.pos, theType);
- case Typed(Ident(Name name), Tree tpe): // typed pattern
+ case Typed(Ident ident, Tree tpe): // typed pattern
theType = getConstrType( tpe.type );
assert (env != null ) : "env is null";
- if (/*(env != null) &&*/ (name != Names.WILDCARD))
+ if (/*(env != null) &&*/ (ident.symbol() != defs.PATTERN_WILDCARD))
env.newBoundVar(
((Tree.Typed)tree).expr.symbol(),
theType,
@@ -202,8 +202,8 @@ public class AlgebraicMatcher extends PatternMatcher {
return mk.DefaultPat( tree.pos, theType );
else
return mk.ConstrPat( tree.pos, theType );
- case Bind(Name name, Ident(Name id)): // x @ _
- if( id == Names.WILDCARD ) {
+ case Bind(Name name, Ident ident): // x @ _
+ if( ident.symbol() == defs.PATTERN_WILDCARD ) {
env.newBoundVar(
tree.symbol(),
theType,
@@ -212,11 +212,13 @@ public class AlgebraicMatcher extends PatternMatcher {
}
throw new ApplicationError("cannot handle "+tree);
case Ident(Name name): // pattern without args or variable
- if ((tree.symbol() != null) && tree.symbol().isPrimaryConstructor())
+ Symbol symbol = tree.symbol();
+ assert symbol != null: tree;
+ if (symbol.isPrimaryConstructor())
return mk.ConstrPat(tree.pos, theType);
else if (name.isVariable()) {
assert (env != null ) : "env is null";
- if (/*(env != null) &&*/ (name != Names.WILDCARD))
+ if (/*(env != null) &&*/ (symbol != defs.PATTERN_WILDCARD))
env.newBoundVar(
tree.symbol(),
theType,
diff --git a/sources/scalac/transformer/matching/Autom2Scala.java b/sources/scalac/transformer/matching/Autom2Scala.java
index d380172993..8b2430a07b 100644
--- a/sources/scalac/transformer/matching/Autom2Scala.java
+++ b/sources/scalac/transformer/matching/Autom2Scala.java
@@ -261,9 +261,7 @@ public class Autom2Scala {
Tree.Empty,
gen.mkBooleanLit( Position.FIRSTPOS, true )),
(CaseDef) cf.make.CaseDef( pat.pos,
- cf.make.Ident(pat.pos, Names.WILDCARD)
- //.setSymbol( Symbol.NONE )
- .setType(pat.type()),
+ cf.gen.Ident(pat.pos, defs.PATTERN_WILDCARD),
Tree.Empty,
gen.mkBooleanLit( pat.pos, false )) },
false
diff --git a/sources/scalac/transformer/matching/BindingBerrySethi.java b/sources/scalac/transformer/matching/BindingBerrySethi.java
index ab1528bdb8..e9da02fa92 100644
--- a/sources/scalac/transformer/matching/BindingBerrySethi.java
+++ b/sources/scalac/transformer/matching/BindingBerrySethi.java
@@ -1,5 +1,6 @@
package scalac.transformer.matching ;
+import scalac.Global ;
import scalac.ApplicationError ;
import scalac.ast.Tree ;
import scalac.util.Name ;
@@ -58,11 +59,11 @@ public class BindingBerrySethi extends BerrySethi {
this.varAt.put( i, activeBinders.clone() ); // below @ ?
break;
case Ident( Name name ):
- assert ( name == Names.WILDCARD )||( name.toString().indexOf("$") > -1 ) : "found variable label "+name;
+ assert ( pat.symbol() == Global.instance.definitions.PATTERN_WILDCARD )||( name.toString().indexOf("$") > -1 ) : "found variable label "+name;
Vector binders = (Vector) activeBinders.clone();
/*
- if( name != Names.WILDCARD) {
+ if( pat.symbol() != Global.instance.definitions.PATTERN_WILDCARD) {
binders.add( pat.symbol() );
}
*/
diff --git a/sources/scalac/transformer/matching/LeftTracerInScala.java b/sources/scalac/transformer/matching/LeftTracerInScala.java
index a74f4f994a..9a20a93bc2 100644
--- a/sources/scalac/transformer/matching/LeftTracerInScala.java
+++ b/sources/scalac/transformer/matching/LeftTracerInScala.java
@@ -294,9 +294,7 @@ public class LeftTracerInScala extends TracerInScala {
Tree.Empty,
gen.mkBooleanLit( cf.pos, true )),
(CaseDef) cf.make.CaseDef( pat.pos,
- cf.make.Ident(pat.pos, Names.WILDCARD)
- //DON'T .setSymbol( Symbol.NONE ) !
- .setType(pat.type()),
+ cf.gen.Ident(pat.pos, defs.PATTERN_WILDCARD),
Tree.Empty,
gen.mkBooleanLit( cf.pos, false)) },
false
diff --git a/sources/scalac/transformer/matching/PatternMatcher.java b/sources/scalac/transformer/matching/PatternMatcher.java
index 887b117595..8b1bbdb5c1 100644
--- a/sources/scalac/transformer/matching/PatternMatcher.java
+++ b/sources/scalac/transformer/matching/PatternMatcher.java
@@ -272,7 +272,7 @@ public class PatternMatcher extends PatternTool {
switch (tree) {
case Bind(Name name, Tree pat):
PatternNode node = patternNode(pat, header, env);
- if ((env != null) && (name != Names.WILDCARD))
+ if ((env != null) && (tree.symbol() != defs.PATTERN_WILDCARD))
env.newBoundVar( tree.symbol(),
tree.type,
header.selector);
@@ -284,12 +284,12 @@ public class PatternMatcher extends PatternTool {
return mk.SequencePat( tree.pos, tree.type, ts.length );
}
return mk.ConstrPat(tree.pos, tree.type);
- case Typed(Ident(Name name), Tree tpe): // variable pattern
+ case Typed(Ident ident, Tree tpe): // variable pattern
PatternNode node =
(header.type.isSubType(tpe.type)) ?
mk.DefaultPat(tree.pos, tpe.type)
: mk.ConstrPat(tree.pos, tpe.type);
- if ((env != null) && (name != Names.WILDCARD))
+ if ((env != null) && (ident.symbol() != defs.PATTERN_WILDCARD))
switch (node) {
case ConstrPat(Symbol casted):
env.newBoundVar(
@@ -305,7 +305,7 @@ public class PatternMatcher extends PatternTool {
}
return node;
case Ident(Name name): // pattern without args or variable
- if (name == Names.WILDCARD)
+ if (tree.symbol() == defs.PATTERN_WILDCARD)
return mk.DefaultPat(tree.pos, header.type);
else if (tree.symbol().isPrimaryConstructor())
return mk.ConstrPat(tree.pos, tree.type);
diff --git a/sources/scalac/transformer/matching/PatternTool.java b/sources/scalac/transformer/matching/PatternTool.java
index bad82cde60..7cd144de7c 100644
--- a/sources/scalac/transformer/matching/PatternTool.java
+++ b/sources/scalac/transformer/matching/PatternTool.java
@@ -32,7 +32,6 @@ abstract class PatternTool {
public static final Name SCALA_MATCHERROR_N = Name.fromString("scala.MatchError");
public static final Name MATCHERROR_N = Name.fromString("MatchError");
public static final Name FAIL_N = Name.fromString("fail");
- //public static final Name WILDCARD_N = Name.fromString("_"); use Names
public static final Name LENGTH_N = Name.fromString("length");
public static final Name APPLY_N = Name.fromString("apply");
diff --git a/sources/scalac/transformer/matching/RightTracerInScala.java b/sources/scalac/transformer/matching/RightTracerInScala.java
index 5648c49833..73ef37520f 100644
--- a/sources/scalac/transformer/matching/RightTracerInScala.java
+++ b/sources/scalac/transformer/matching/RightTracerInScala.java
@@ -356,9 +356,7 @@ public class RightTracerInScala extends TracerInScala {
Tree.Empty,
handleBody1( helpMap3 )/* "freshening */),
(CaseDef) cf.make.CaseDef( pat.pos,
- cf.make.Ident( pat.pos, Names.WILDCARD )
- //DON'T .setSymbol( Symbol.NONE ) !!FIXED
- .setType( pat.type() ),
+ cf.gen.Ident( pat.pos, defs.PATTERN_WILDCARD ),
Tree.Empty,
gen.mkBooleanLit( pat.pos, false )) }, // else return false
true // do binding please
diff --git a/sources/scalac/transformer/matching/TestRegTraverser.java b/sources/scalac/transformer/matching/TestRegTraverser.java
index cea429eb03..0394110128 100644
--- a/sources/scalac/transformer/matching/TestRegTraverser.java
+++ b/sources/scalac/transformer/matching/TestRegTraverser.java
@@ -8,6 +8,7 @@
package scalac.transformer.matching;
+import scalac.Global;
import scalac.ast.*;
import scalac.util.*;
import scalac.symtab.*;
@@ -28,9 +29,10 @@ public class TestRegTraverser extends Traverser {
variables.add(tree.symbol());
traverse(pat);
break;
- case Ident(Name name):
- if ((name != Names.WILDCARD) &&
- variables.contains(tree.symbol()))
+ case Ident(_):
+ Symbol symbol = tree.symbol();
+ if ((symbol != Global.instance.definitions.PATTERN_WILDCARD) &&
+ variables.contains(symbol))
result = true;
break;
case CaseDef(Tree pat, _, _):
diff --git a/sources/scalac/transformer/matching/TestRegTraverser.scala b/sources/scalac/transformer/matching/TestRegTraverser.scala
index 9db9dac492..b00de87626 100644
--- a/sources/scalac/transformer/matching/TestRegTraverser.scala
+++ b/sources/scalac/transformer/matching/TestRegTraverser.scala
@@ -8,6 +8,7 @@
package scalac.transformer.matching;
+import scalac.Global;
import scalac.ast._;
import scalac.util._;
import scalac.symtab._;
@@ -28,8 +29,9 @@ object TestRegTraverser extends Traverser {
variables.add(tree.symbol());
traverse(pat);
case Tree$Ident( name ) =>
- result = ((name != Names.WILDCARD)
- && variables.contains(tree.symbol()))
+ val symbol = tree.symbol();
+ result = ((symbol != Global.instance.definitions.PATTERN_WILDCARD)
+ && variables.contains(symbol))
case Tree$CaseDef(pat, _, _) =>
traverse(pat);
case _ =>
diff --git a/sources/scalac/typechecker/Analyzer.java b/sources/scalac/typechecker/Analyzer.java
index 3834f4ddb0..595f1e462c 100644
--- a/sources/scalac/typechecker/Analyzer.java
+++ b/sources/scalac/typechecker/Analyzer.java
@@ -1040,6 +1040,7 @@ public class Analyzer extends Transformer implements Modifiers, Kinds {
} else {
((DefDef) tree).rhs = rhs = transform(rhs, EXPRmode);
restype = rhs.type;
+ // !!! restype = rhs.type.widen(); // !!!
}
restype = checkNoEscape(tpe.pos, restype);
popContext();
@@ -1069,6 +1070,7 @@ public class Analyzer extends Transformer implements Modifiers, Kinds {
((ValDef) tree).rhs = rhs = transform(rhs, EXPRmode);
}
owntype = rhs.type;
+ // !!! owntype = rhs.type.widen(); // !!!
}
popContext();
}
@@ -1102,7 +1104,7 @@ public class Analyzer extends Transformer implements Modifiers, Kinds {
owntype = expr.type;
Type tp = owntype.widen();
for (int i = 0; i < selectors.length; i = i + 2) {
- if (selectors[i] != Names.WILDCARD &&
+ if (selectors[i] != Names.IMPORT_WILDCARD &&
tp.lookup(selectors[i]) == Symbol.NONE &&
tp.lookup(selectors[i].toTypeName()) == Symbol.NONE)
error(tree.pos, NameTransformer.decode(selectors[i]) + " is not a member of " + expr + " of type " + expr.type);
@@ -1373,7 +1375,7 @@ public class Analyzer extends Transformer implements Modifiers, Kinds {
Type seqConstructorType(Type paramtp, Type resulttp) {
Symbol constr = resulttp.symbol().primaryConstructor();
Symbol param = new TermSymbol(
- Position.NOPOS, Names.WILDCARD, constr, PARAM | REPEATED).setInfo(
+ Position.NOPOS, Names.PATTERN_WILDCARD, constr, PARAM | REPEATED).setInfo(
paramtp.baseType(definitions.SEQ_CLASS));
return Type.MethodType(new Symbol[]{param}, resulttp);
}
@@ -2438,25 +2440,27 @@ public class Analyzer extends Transformer implements Modifiers, Kinds {
Symbol vble, vble2 = null;
// if vble is bound with @, there is already a symbol
- if( name != Names.WILDCARD ) {
+ if( name != Names.PATTERN_WILDCARD ) {
vble2 = context.scope.lookup( name );
}
if ( patternVars.containsKey( vble2 ) )
vble = vble2;
else {
- vble = new TermSymbol(tree.pos,
+ vble = name == Names.PATTERN_WILDCARD
+ ? definitions.PATTERN_WILDCARD
+ : new TermSymbol(tree.pos,
name,
context.owner,
0).setType( pt );
- if((( mode & SEQUENCEmode) != 0)&&( name != Names.WILDCARD )) {
+ if((( mode & SEQUENCEmode) != 0)&&( name != Names.PATTERN_WILDCARD )) {
// x => x @ _ in sequence patterns
tree = desugarize.IdentPattern( tree );
}
}
- if ( name != Names.WILDCARD ) enterInScope(vble);
+ if ( name != Names.PATTERN_WILDCARD ) enterInScope(vble);
return tree.setSymbol(vble).setType(pt);
} else {
return transformIdent(tree, name);
@@ -2567,7 +2571,7 @@ public class Analyzer extends Transformer implements Modifiers, Kinds {
for( int i = 0; i < trees.length; i ++ )
switch(trees[i]) {
case Ident( Name name ):
- if( name != Names.WILDCARD ) {
+ if( name != Names.PATTERN_WILDCARD ) {
Symbol vble = context.scope.lookup( name );
/*
Symbol vble = new TermSymbol( trees[ i ].pos, name, currentOwner, 0)
@@ -2577,7 +2581,9 @@ public class Analyzer extends Transformer implements Modifiers, Kinds {
*/
trees[i] = desugarize.IdentPattern(trees[i]).setSymbol(vble)
.setType(vble.type());
- }
+ } else {
+ trees[i] = gen.Ident(trees[i].pos, definitions.PATTERN_WILDCARD);
+ }
}
}
diff --git a/sources/scalac/typechecker/AnalyzerPhase.java b/sources/scalac/typechecker/AnalyzerPhase.java
index 2b7d0fa886..3db1a0bf1c 100644
--- a/sources/scalac/typechecker/AnalyzerPhase.java
+++ b/sources/scalac/typechecker/AnalyzerPhase.java
@@ -44,7 +44,7 @@ public class AnalyzerPhase extends Phase {
.setSymbol(definitions.JAVALANG)
.setType(Type.singleType(java.type, definitions.JAVALANG));
Tree importjavalang = make.Import(
- Position.NOPOS, javalang, new Name[]{Names.WILDCARD})
+ Position.NOPOS, javalang, new Name[]{Names.IMPORT_WILDCARD})
.setSymbol(definitions.JAVALANG)
.setType(definitions.UNIT_TYPE);
startContext.imports = new ImportList(
@@ -54,7 +54,7 @@ public class AnalyzerPhase extends Phase {
.setSymbol(definitions.SCALA)
.setType(Type.singleType(definitions.ROOT_TYPE, definitions.SCALA));
Tree importscala = make.Import(
- Position.NOPOS, scala, new Name[]{Names.WILDCARD})
+ Position.NOPOS, scala, new Name[]{Names.IMPORT_WILDCARD})
.setSymbol(definitions.SCALA)
.setType(definitions.UNIT_TYPE);
startContext.imports = new ImportList(
@@ -73,7 +73,7 @@ public class AnalyzerPhase extends Phase {
.setType(Type.singleType(scala.type, scalaPredefSym));
Tree importscalaPredef = make.Import(
- Position.NOPOS, scalaPredef, new Name[]{Names.WILDCARD})
+ Position.NOPOS, scalaPredef, new Name[]{Names.IMPORT_WILDCARD})
.setSymbol(scalaPredefSym)
.setType(definitions.UNIT_TYPE);
startContext.imports = new ImportList(
@@ -96,7 +96,7 @@ public class AnalyzerPhase extends Phase {
.setType(Type.singleType(definitions.ROOT_TYPE, module));
Tree importConsole = make.Import(
- Position.NOPOS, console, new Name[]{Names.WILDCARD})
+ Position.NOPOS, console, new Name[]{Names.IMPORT_WILDCARD})
.setSymbol(module)
.setType(definitions.UNIT_TYPE);
consoleContext.imports = new ImportList(
diff --git a/sources/scalac/typechecker/DeSugarize.java b/sources/scalac/typechecker/DeSugarize.java
index 09c27be4ac..8640962780 100644
--- a/sources/scalac/typechecker/DeSugarize.java
+++ b/sources/scalac/typechecker/DeSugarize.java
@@ -84,7 +84,7 @@ public class DeSugarize implements Kinds, Modifiers {
void getVariables(Tree tree, ArrayList vars) {
switch(tree) {
case Ident(Name name):
- if (name.isVariable() && name != Names.WILDCARD) vars.add(name);
+ if (name.isVariable() && name != Names.PATTERN_WILDCARD) vars.add(name);
break;
case Typed(Tree expr, Tree type):
getVariables(expr, vars);
@@ -103,7 +103,7 @@ public class DeSugarize implements Kinds, Modifiers {
case Literal( _ ):
break;
case Bind( Name name, Tree t ):
- if (name.isVariable() && name != Names.WILDCARD) vars.add(name);
+ if (name.isVariable() && name != Names.PATTERN_WILDCARD) vars.add(name);
getVariables( t, vars );
break;
case Alternative( Tree ts[] ):
@@ -207,7 +207,7 @@ public class DeSugarize implements Kinds, Modifiers {
}
cases1[cases.length] = (CaseDef) make.CaseDef(
tree.pos,
- make.Ident(tree.pos, Names.WILDCARD),
+ gen.Ident(tree.pos, global.definitions.PATTERN_WILDCARD),
Tree.Empty,
gen.mkBooleanLit(tree.pos, false));
return make.Visitor(tree.pos, cases1);
@@ -544,10 +544,10 @@ public class DeSugarize implements Kinds, Modifiers {
public Tree IdentPattern( Tree tree ) {
switch( tree ) {
case Ident( Name name ):
- if( name == Names.WILDCARD ) throw new ApplicationError("nothing to desugarize");
+ if( name == Names.PATTERN_WILDCARD ) throw new ApplicationError("nothing to desugarize");
return make.Bind( tree.pos,
name,
- make.Ident( tree.pos, Names.WILDCARD ).setType( tree.type )).setType( tree.type );
+ gen.Ident( tree.pos, global.definitions.PATTERN_WILDCARD )).setType( tree.type );
default:
throw new ApplicationError("ident expected");
}
diff --git a/sources/scalac/typechecker/ImportList.java b/sources/scalac/typechecker/ImportList.java
index f631ade171..c26bff092d 100644
--- a/sources/scalac/typechecker/ImportList.java
+++ b/sources/scalac/typechecker/ImportList.java
@@ -62,7 +62,7 @@ class ImportList {
return t.lookupNonPrivate(selectors[i]);
} else if (name.toTermName() == selectors[i]) {
renamed = true;
- } else if (selectors[i] == Names.WILDCARD && !renamed) {
+ } else if (selectors[i] == Names.IMPORT_WILDCARD && !renamed) {
return t.lookupNonPrivate(name);
}
}
diff --git a/sources/scalac/typechecker/RefCheck.java b/sources/scalac/typechecker/RefCheck.java
index b1356c2826..3d1461272c 100644
--- a/sources/scalac/typechecker/RefCheck.java
+++ b/sources/scalac/typechecker/RefCheck.java
@@ -987,7 +987,7 @@ public class RefCheck extends Transformer implements Modifiers, Kinds {
if (name == TypeNames.WILDCARD_STAR)
return tree;
- if( TreeInfo.isWildcardPattern( tree ) )
+ if( sym == defs.PATTERN_WILDCARD )
return elimTypeNode(tree);
//System.out.println("name: "+name);
diff --git a/sources/scalac/util/Names.java b/sources/scalac/util/Names.java
index ab192c99de..fc7d44ff9f 100644
--- a/sources/scalac/util/Names.java
+++ b/sources/scalac/util/Names.java
@@ -47,7 +47,8 @@ public class Names {
public static final Name ERROR = Name.ERROR;
public static final Name NOSYMBOL = Name.fromString("<none>");
public static final Name EMPTY = Name.fromString("");
- public static final Name WILDCARD = Name.fromString("_");
+ public static final Name IMPORT_WILDCARD = Name.fromString("_");
+ public static final Name PATTERN_WILDCARD = Name.fromString("_");
public static final Name COMPOUND_NAME = Name.fromString("<ct>");
public static final Name ANON_CLASS_NAME = Name.fromString("$anon");
public static final Name ZERO = Name.fromString("<zero>");