From: <yz...@us...> - 2011-01-31 18:03:37
|
Revision: 19829 http://x10.svn.sourceforge.net/x10/?rev=19829&view=rev Author: yzibin Date: 2011-01-31 18:03:31 +0000 (Mon, 31 Jan 2011) Log Message: ----------- * removed the resolver for closures and FunctionTypeNode_c * removed references to XNameWrapper and XName (why weren't these files removed?) Modified Paths: -------------- trunk/x10.compiler/src/polyglot/types/LazyRef_c.java trunk/x10.compiler/src/x10/ast/Closure_c.java trunk/x10.compiler/src/x10/ast/DepParameterExpr_c.java trunk/x10.compiler/src/x10/ast/FunctionTypeNode_c.java trunk/x10.compiler/src/x10/ast/UnknownTypeNode_c.java trunk/x10.compiler/src/x10/ast/X10CanonicalTypeNode_c.java trunk/x10.doc/src/x10doc/doc/X10ParameterizedType.java Modified: trunk/x10.compiler/src/polyglot/types/LazyRef_c.java =================================================================== --- trunk/x10.compiler/src/polyglot/types/LazyRef_c.java 2011-01-31 15:18:08 UTC (rev 19828) +++ trunk/x10.compiler/src/polyglot/types/LazyRef_c.java 2011-01-31 18:03:31 UTC (rev 19829) @@ -1,11 +1,7 @@ package polyglot.types; import java.io.*; -import java.util.ArrayList; -import java.util.List; -import polyglot.frontend.*; -import polyglot.frontend.Goal.Status; import polyglot.util.TypeInputStream; public class LazyRef_c<T> extends AbstractRef_c<T> implements LazyRef<T>, Serializable { @@ -13,15 +9,20 @@ Runnable resolver; - /** Create a lazy ref initialized with error value v. */ + /** Create a lazy ref initialized with error value v. */ public LazyRef_c(T v) { - this(v, new ErrorRunnable()); + this(v, EMPTY_RESOLVER); } - public static class ErrorRunnable implements Runnable { + public static Runnable EMPTY_RESOLVER = new Runnable() { public void run() { } - } + }; + public static Runnable THROW_RESOLVER = new Runnable() { + public void run() { + throw new RuntimeException("This resolver should never be called! Use ref.update(...) before calling ref.get()"); + } + }; /** Create a lazy ref initialized with error value v. */ public LazyRef_c(T v, Runnable resolver) { @@ -38,8 +39,11 @@ this.resolver = resolver; } + public boolean isThrowResolver() { + return this.resolver== THROW_RESOLVER; + } public boolean isResolverSet() { - return !(this.resolver instanceof ErrorRunnable); + return this.resolver!= EMPTY_RESOLVER; } public T get() { Modified: trunk/x10.compiler/src/x10/ast/Closure_c.java =================================================================== --- trunk/x10.compiler/src/x10/ast/Closure_c.java 2011-01-31 15:18:08 UTC (rev 19828) +++ trunk/x10.compiler/src/x10/ast/Closure_c.java 2011-01-31 18:03:31 UTC (rev 19829) @@ -26,7 +26,6 @@ import polyglot.ast.Precedence; import polyglot.ast.Term; import polyglot.ast.TypeNode; -import polyglot.frontend.Globals; import polyglot.main.Report; import polyglot.types.ClassDef; import polyglot.types.ClassType; @@ -45,7 +44,7 @@ import polyglot.types.VarDef; import polyglot.types.VarInstance; import polyglot.util.CodeWriter; -import polyglot.util.CollectionUtil; import x10.util.CollectionFactory; +import polyglot.util.CollectionUtil; import polyglot.util.Position; import polyglot.util.SubtypeSet; import polyglot.util.TypedList; @@ -55,23 +54,17 @@ import polyglot.visit.PrettyPrinter; import polyglot.visit.TypeBuilder; import polyglot.visit.TypeCheckPreparer; -import polyglot.visit.TypeChecker; -import x10.constraint.XConstraint; -import x10.constraint.XVar; -import x10.constraint.XTerms; import x10.errors.Errors; import x10.types.ClosureDef; import x10.types.EnvironmentCapture; import x10.types.ThisDef; import x10.types.X10ClassDef; import x10.types.MethodInstance; -import polyglot.types.Context; import x10.types.X10MemberDef; -import polyglot.types.TypeSystem; +import polyglot.types.LazyRef_c; import x10.types.checker.PlaceChecker; import x10.types.checker.VarChecker; import x10.util.ClosureSynthesizer; -import x10.visit.X10TypeChecker; /** * An implementation of a closure literal in the source text. @@ -365,13 +358,6 @@ return super.enterChildScope(child, c); } - // todo: this does have affect: - // C:\cygwin\home\Yoav\intellij\sourceforge\x10.tests\examples\Issues\XTENLANG_147.x10 - // C:\cygwin\home\Yoav\intellij\sourceforge\x10.tests\examples\Constructs\Array\ArrayOfArraysShorthand.x10 - // C:\cygwin\home\Yoav\intellij\sourceforge\x10.tests\examples\Constructs\Array\ArrayOfArraysShorthand.x10 - // C:\cygwin\home\Yoav\intellij\sourceforge\x10.tests\examples\Constructs\Array\MultiDimensionalJavaArray.x10 - // C:\cygwin\home\Yoav\intellij\sourceforge\x10.tests\examples\Constructs\Async\AsyncReturn.x10 - // C:\cygwin\home\Yoav\intellij\sourceforge\x10.tests\examples\Constructs\Closures\ClosureBody1b.x10 @Override public Node setResolverOverride(Node parent, TypeCheckPreparer v) { if (returnType() instanceof UnknownTypeNode && body() != null) { @@ -382,11 +368,10 @@ childv = childv.enter(this, tn); if (childv instanceof TypeCheckPreparer) { - TypeCheckPreparer tcp = (TypeCheckPreparer) childv; final LazyRef<Type> r = (LazyRef<Type>) tn.typeRef(); - TypeChecker tc = new X10TypeChecker(v.job(), v.typeSystem(), v.nodeFactory(), v.getMemo()); - tc = (TypeChecker) tc.context(tcp.context().freeze()); - r.setResolver(new TypeCheckReturnTypeGoal(this, new Node[] { guard() }, body(), tc, r)); + + // THROW_RESOLVER also tells UnknownTypeNode_c not to try and infer its type (because we visit the returnType first, then the closure) + r.setResolver(LazyRef_c.THROW_RESOLVER); // this resolver should never be called (we update the return type when inferring the closure body). } } return super.setResolverOverride(parent, v); Modified: trunk/x10.compiler/src/x10/ast/DepParameterExpr_c.java =================================================================== --- trunk/x10.compiler/src/x10/ast/DepParameterExpr_c.java 2011-01-31 15:18:08 UTC (rev 19828) +++ trunk/x10.compiler/src/x10/ast/DepParameterExpr_c.java 2011-01-31 18:03:31 UTC (rev 19829) @@ -162,6 +162,9 @@ return n; } + // C:\cygwin\home\Yoav\intellij\sourceforge\x10.tests\examples\Issues\XTENLANG_2330.x10 + // todo: C:\cygwin\home\Yoav\intellij\sourceforge\x10.tests\examples\Constructs\Place\At_MustFailCompile.x10 + // C:\cygwin\home\Yoav\intellij\sourceforge\x10.tests\examples\Misc\x10\frontend\tests\FrontEndTests_MustFailCompile.x10 public void setResolver(Node parent, final TypeCheckPreparer v) { TypeChecker tc = new X10TypeChecker(v.job(), v.typeSystem(), v.nodeFactory(), v.getMemo()); tc = (TypeChecker) tc.context(v.context().freeze()); @@ -177,7 +180,7 @@ xr.setResolver(new TypeCheckFragmentGoal<TypeConstraint>(parent, this, tc, xr, false)); } } - + @Override public Node disambiguate(ContextVisitor ar) throws SemanticException { DepParameterExpr_c n = (DepParameterExpr_c) super.disambiguate(ar); Modified: trunk/x10.compiler/src/x10/ast/FunctionTypeNode_c.java =================================================================== --- trunk/x10.compiler/src/x10/ast/FunctionTypeNode_c.java 2011-01-31 15:18:08 UTC (rev 19828) +++ trunk/x10.compiler/src/x10/ast/FunctionTypeNode_c.java 2011-01-31 18:03:31 UTC (rev 19829) @@ -141,15 +141,6 @@ return n; } - @Override - public void setResolver(Node parent, final TypeCheckPreparer v) { - if (typeRef() instanceof LazyRef<?>) { - LazyRef<Type> r = (LazyRef<Type>) typeRef(); - TypeChecker tc = new X10TypeChecker(v.job(), v.typeSystem(), v.nodeFactory(), v.getMemo()); - tc = (TypeChecker) tc.context(v.context().freeze()); - r.setResolver(new X10TypeCheckTypeGoal(parent, this, tc, r)); - } - } /* (non-Javadoc) * @see x10.ast.FunctionTypeNode#typeParameters() */ Modified: trunk/x10.compiler/src/x10/ast/UnknownTypeNode_c.java =================================================================== --- trunk/x10.compiler/src/x10/ast/UnknownTypeNode_c.java 2011-01-31 15:18:08 UTC (rev 19828) +++ trunk/x10.compiler/src/x10/ast/UnknownTypeNode_c.java 2011-01-31 18:03:31 UTC (rev 19829) @@ -26,6 +26,8 @@ import polyglot.types.Type; import polyglot.types.TypeSystem; import polyglot.types.UnknownType; +import polyglot.types.Ref; +import polyglot.types.LazyRef_c; import polyglot.util.CodeWriter; import polyglot.util.Position; import polyglot.visit.ContextVisitor; @@ -55,15 +57,19 @@ NodeFactory nf = ar.nodeFactory(); // Dereference--this will cause type inference to be performed. - - Type t = typeRef().get(); + + final LazyRef_c<? extends Type> ref = (LazyRef_c) typeRef(); + if (ref.isThrowResolver()) + return this; + + Type t = ref.get(); if (t instanceof UnknownType) { return this; } - return nf.CanonicalTypeNode(position(), typeRef()); + return nf.CanonicalTypeNode(position(), ref); } Modified: trunk/x10.compiler/src/x10/ast/X10CanonicalTypeNode_c.java =================================================================== --- trunk/x10.compiler/src/x10/ast/X10CanonicalTypeNode_c.java 2011-01-31 15:18:08 UTC (rev 19828) +++ trunk/x10.compiler/src/x10/ast/X10CanonicalTypeNode_c.java 2011-01-31 18:03:31 UTC (rev 19829) @@ -158,7 +158,10 @@ } return n; } - + + // todo: C:\cygwin\home\Yoav\intellij\sourceforge\x10.tests\examples\Benchmarks\SeqArray1.x10 + // C:\cygwin\home\Yoav\intellij\sourceforge\x10.tests\examples\Benchmarks\SeqArray2b.x10 + // C:\cygwin\home\Yoav\intellij\sourceforge\x10.tests\examples\Constructs\Array\Array1.x10 @Override public void setResolver(Node parent, final TypeCheckPreparer v) { if (typeRef() instanceof LazyRef<?>) { Modified: trunk/x10.doc/src/x10doc/doc/X10ParameterizedType.java =================================================================== --- trunk/x10.doc/src/x10doc/doc/X10ParameterizedType.java 2011-01-31 15:18:08 UTC (rev 19828) +++ trunk/x10.doc/src/x10doc/doc/X10ParameterizedType.java 2011-01-31 18:03:31 UTC (rev 19829) @@ -14,8 +14,6 @@ import x10.constraint.XField; import x10.constraint.XFormula; import x10.constraint.XLocal; -import x10.constraint.XName; -import x10.constraint.XNameWrapper; import x10.constraint.XTerm; import x10.constraint.XVar; import x10.types.ConstrainedType; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |