From 774bd9179ecc515902db63ef2ba7271e6d6d4a6e Mon Sep 17 00:00:00 2001 From: paltherr Date: Mon, 13 Oct 2003 15:43:36 +0000 Subject: - 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 --- sources/scalac/typechecker/Analyzer.java | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) (limited to 'sources/scalac/typechecker/Analyzer.java') 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); + } } } -- cgit v1.2.3