Changeset 866
- Timestamp:
- 10/21/07 21:11:50 (1 year ago)
- Files:
-
- trunk/dtool/.classpath (modified) (1 diff)
- trunk/dtool/META-INF/MANIFEST.MF (modified) (2 diffs)
- trunk/dtool/src-descent.core/src/descent/internal/compiler/parser/StandardLibraryHelper.java (modified) (2 diffs)
- trunk/dtool/src/dtool/ast/declarations/DeclarationStaticIfIsType.java (modified) (2 diffs)
- trunk/dtool/src/dtool/ast/declarations/NodeList.java (modified) (1 diff)
- trunk/dtool/src/dtool/ast/declarations/PartialPackageDefUnit.java (modified) (1 diff)
- trunk/dtool/src/dtool/ast/declarations/PartialPackageDefUnitOfModule.java (modified) (1 diff)
- trunk/dtool/src/dtool/ast/declarations/PartialPackageDefUnitOfPackage.java (modified) (1 diff)
- trunk/dtool/src/dtool/ast/definitions/DefUnit.java (modified) (3 diffs)
- trunk/dtool/src/dtool/ast/definitions/DefinitionAggregate.java (modified) (1 diff)
- trunk/dtool/src/dtool/ast/definitions/DefinitionEnum.java (modified) (1 diff)
- trunk/dtool/src/dtool/ast/definitions/DefinitionFunction.java (modified) (1 diff)
- trunk/dtool/src/dtool/ast/definitions/DefinitionTemplate.java (modified) (2 diffs)
- trunk/dtool/src/dtool/ast/definitions/EnumMember.java (modified) (1 diff)
- trunk/dtool/src/dtool/ast/definitions/FunctionParameter.java (modified) (2 diffs)
- trunk/dtool/src/dtool/ast/definitions/Module.java (modified) (1 diff)
- trunk/dtool/src/dtool/ast/definitions/NamelessParameter.java (modified) (1 diff)
- trunk/dtool/src/dtool/ast/definitions/NativeDefUnit.java (modified) (3 diffs)
- trunk/dtool/src/dtool/ast/expressions/ExpCall.java (modified) (1 diff)
- trunk/dtool/src/dtool/ast/references/CommonRefQualified.java (modified) (1 diff)
- trunk/dtool/src/dtool/ast/references/CommonRefSingle.java (modified) (3 diffs)
- trunk/dtool/src/dtool/ast/references/NamedReference.java (modified) (1 diff)
- trunk/dtool/src/dtool/ast/references/RefImportSelection.java (modified) (2 diffs)
- trunk/dtool/src/dtool/ast/references/RefTemplateInstance.java (modified) (1 diff)
- trunk/dtool/src/dtool/ast/statements/BlockStatement.java (modified) (1 diff)
- trunk/dtool/src/dtool/ast/statements/StatementForeach.java (modified) (1 diff)
- trunk/dtool/src/dtool/ast/statements/StatementForeachRange.java (modified) (2 diffs)
- trunk/dtool/src/dtool/ast/statements/StatementTry.java (modified) (1 diff)
- trunk/dtool/src/dtool/refmodel/CommonDefUnitSearch.java (modified) (2 diffs)
- trunk/dtool/src/dtool/refmodel/DefUnitSearch.java (modified) (2 diffs)
- trunk/dtool/src/dtool/refmodel/IScope.java (modified) (2 diffs)
- trunk/dtool/src/dtool/refmodel/IScopeAdaptable.java (deleted)
- trunk/dtool/src/dtool/refmodel/PrefixDefUnitSearch.java (modified) (9 diffs)
- trunk/dtool/src/dtool/refmodel/ReferenceResolver.java (modified) (5 diffs)
- trunk/mmrnmhrm.tests/src-core/dtool/tests/ast/converter/Convertion_MiscTest.java (modified) (1 diff)
- trunk/mmrnmhrm.tests/src-core/dtool/tests/ref/FindDef_ScopeRulesTest.java (modified) (1 diff)
- trunk/mmrnmhrm.tests/src-core/dtool/tests/ref/cc/CodeCompletion_DefUnitsTest.java (modified) (3 diffs)
- trunk/mmrnmhrm.tests/src-core/dtool/tests/ref/cc/CodeCompletion_DuplicatesTest.java (modified) (2 diffs)
- trunk/mmrnmhrm.tests/src-core/dtool/tests/ref/cc/CodeCompletion_LookupTest.java (modified) (8 diffs)
- trunk/mmrnmhrm.tests/src-core/dtool/tests/ref/cc/CodeCompletion__Common.java (modified) (4 diffs)
- trunk/mmrnmhrm.tests/src-core/dtool/tests/ref/cc/CodeCompletion_n2Test.java (modified) (1 diff)
- trunk/mmrnmhrm.tests/testdata/refs/refScopes.d (modified) (1 diff)
- trunk/mmrnmhrm.tests/testdata/sampleSrc3/sampledefs.d (modified) (1 diff)
- trunk/mmrnmhrm.tests/testdata/sampleSrc3/testCodeCompletion.d (modified) (1 diff)
- trunk/mmrnmhrm.tests/testdata/sampleSrc3/testCodeCompletion2.d (modified) (1 diff)
- trunk/mmrnmhrm.ui/JavadocHoverStyleSheet.css (modified) (1 diff)
- trunk/mmrnmhrm.ui/JavadocViewStyleSheet.css (modified) (1 diff)
- trunk/mmrnmhrm.ui/dist (deleted)
- trunk/mmrnmhrm.ui/src-jdt-adapters/org/eclipse/jdt/ui/JDT_PreferenceConstants.java (moved) (moved from trunk/mmrnmhrm.ui/src-jdt-adapters/org/eclipse/jdt/ui/PreferenceConstants.java) (1 diff)
- trunk/mmrnmhrm.ui/src/melnorme/lang/ui/ExceptionHandler.java (modified) (4 diffs)
- trunk/mmrnmhrm.ui/src/mmrnmhrm/ui/DeeUIPreferenceInitializer.java (modified) (4 diffs)
- trunk/mmrnmhrm.ui/src/mmrnmhrm/ui/actions/DeeInvokeContentAssistHandler.java (modified) (2 diffs)
- trunk/mmrnmhrm.ui/src/mmrnmhrm/ui/actions/OperationsManager.java (modified) (4 diffs)
- trunk/mmrnmhrm.ui/src/mmrnmhrm/ui/editor/text/AbstractCompletionProposal.java (modified) (2 diffs)
- trunk/mmrnmhrm.ui/src/mmrnmhrm/ui/editor/text/AbstractTextHover.java (modified) (4 diffs)
- trunk/mmrnmhrm.ui/src/mmrnmhrm/ui/editor/text/DeeCodeContentAssistProcessor.java (modified) (3 diffs)
- trunk/mmrnmhrm.ui/src/mmrnmhrm/ui/editor/text/DeeDocTextHover.java (moved) (moved from trunk/mmrnmhrm.ui/src/mmrnmhrm/ui/editor/text/DeeTextHover.java) (4 diffs)
- trunk/mmrnmhrm.ui/src/mmrnmhrm/ui/editor/text/HoverUtil.java (modified) (3 diffs)
- trunk/mmrnmhrm.ui/src/mmrnmhrm/ui/preferences/DeeSourceColoringConfigurationBlock.java (modified) (2 diffs)
- trunk/mmrnmhrm.ui/src/mmrnmhrm/ui/text/DeeCodeScanner.java (modified) (3 diffs)
- trunk/mmrnmhrm.ui/src/mmrnmhrm/ui/text/DeeCodeScannerWithLexer.java (modified) (3 diffs)
- trunk/mmrnmhrm.ui/src/mmrnmhrm/ui/text/DeeSourceViewerConfiguration.java (modified) (3 diffs)
- trunk/mmrnmhrm.ui/src/mmrnmhrm/ui/text/color/DeeColorPreferenceInitializer.java (modified) (1 diff)
- trunk/mmrnmhrm.ui/src/mmrnmhrm/ui/text/color/IDeeColorConstants.java (moved) (moved from trunk/mmrnmhrm.ui/src/mmrnmhrm/ui/text/color/DeeColorConstants.java) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/dtool/.classpath
r773 r866 2 2 <classpath> 3 3 <classpathentry kind="src" path="src"/> 4 <classpathentry kind="src" path="src-descent.core/src"/>5 <classpathentry kind="src" path="src-descent.core/src-util"/>6 4 <classpathentry kind="src" path="libs/ini4j-0.2.6/src/classes"/> 7 5 <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/> trunk/dtool/META-INF/MANIFEST.MF
r804 r866 5 5 Bundle-Version: 0.2.0.qualifier 6 6 Bundle-ClassPath: DTool.jar 7 Export-Package: descent.core.compiler, 8 descent.core.dom, 9 descent.internal.compiler.parser, 10 descent.internal.compiler.parser.ast, 11 melnorme.miscutil, 12 melnorme.miscutil.log, 13 melnorme.miscutil.tree, 14 dtool, 7 Export-Package: dtool, 15 8 dtool.ast, 16 9 dtool.ast.declarations, … … 26 19 Bundle-Vendor: %pluginProvider 27 20 Bundle-RequiredExecutionEnvironment: J2SE-1.5 28 Require-Bundle: org.eclipse.dltk.core, 21 Require-Bundle: dtool.descent.core;visibility:=reexport, 22 org.eclipse.dltk.core, 29 23 org.eclipse.core.runtime trunk/dtool/src-descent.core/src/descent/internal/compiler/parser/StandardLibraryHelper.java
r758 r866 9 9 import descent.core.compiler.CharOperation; 10 10 import descent.core.dom.AST; 11 import descent.core.dom.CompilationUnitResolver; 11 12 12 13 … … 102 103 } 103 104 } 104 //CompilationUnitResolver.resolve(module);105 CompilationUnitResolver.resolve(module); 105 106 } catch (Exception e) { 106 107 e.printStackTrace(); trunk/dtool/src/dtool/ast/declarations/DeclarationStaticIfIsType.java
r804 r866 58 58 } 59 59 60 /** This is a special scope, where the IsTypeDefUnit is available. */ 60 61 public class IsTypeScope extends ASTNeoNode implements IScopeNode { 61 62 … … 83 84 } 84 85 85 //@Override 86 public IScope getAdaptedScope() { 87 return this; 86 public boolean hasSequentialLookup() { 87 return false; 88 88 } 89 89 90 } 90 91 trunk/dtool/src/dtool/ast/declarations/NodeList.java
r804 r866 26 26 27 27 public static NodeList createNodeList(Statement body) { 28 if(body == null) 29 return null; 28 30 if(body instanceof CompoundStatement) { 29 31 CompoundStatement cst = (CompoundStatement) body; trunk/dtool/src/dtool/ast/declarations/PartialPackageDefUnit.java
r758 r866 75 75 } 76 76 77 public boolean hasSequentialLookup() { 78 return false; 79 } 80 77 81 } trunk/dtool/src/dtool/ast/declarations/PartialPackageDefUnitOfModule.java
r758 r866 35 35 public String toStringAsElement() { 36 36 if(module != null) 37 return getName() + "." + module.toStringAsElement();37 return getName() /*+ "." + module.toStringAsElement()*/; 38 38 else { 39 return getName() + "." + moduleRef.module;39 return getName() /*+ "." + moduleRef.module*/; 40 40 } 41 41 } trunk/dtool/src/dtool/ast/declarations/PartialPackageDefUnitOfPackage.java
r758 r866 22 22 @Override 23 23 public String toStringAsElement() { 24 return getName() + "." + child.toStringAsElement();24 return getName() /*+ "." + child.toStringAsElement()*/; 25 25 } 26 26 trunk/dtool/src/dtool/ast/definitions/DefUnit.java
r773 r866 6 6 import descent.internal.compiler.parser.IdentifierExp; 7 7 import dtool.ast.ASTNeoNode; 8 import dtool.refmodel.IScope;9 import dtool.refmodel.IScopeAdaptable;10 8 import dtool.refmodel.IScopeNode; 11 9 … … 13 11 * Abstract class for all AST elements that define a new named entity. 14 12 */ 15 public abstract class DefUnit extends ASTNeoNode implements IScopeAdaptable{13 public abstract class DefUnit extends ASTNeoNode { 16 14 17 15 … … 92 90 * May be null if the scope is not found. */ 93 91 public abstract IScopeNode getMembersScope(); 94 95 //@Override96 public IScope getAdaptedScope() {97 return getMembersScope();98 }99 92 100 93 @Override trunk/dtool/src/dtool/ast/definitions/DefinitionAggregate.java
r758 r866 49 49 } 50 50 51 public boolean hasSequentialLookup() { 52 return false; 53 } 54 51 55 @Override 52 56 public String toStringForHoverSignature() { trunk/dtool/src/dtool/ast/definitions/DefinitionEnum.java
r758 r866 67 67 return null; 68 68 } 69 70 public boolean hasSequentialLookup() { 71 return true; 72 } 69 73 70 74 @SuppressWarnings("unchecked") trunk/dtool/src/dtool/ast/definitions/DefinitionFunction.java
r758 r866 107 107 } 108 108 109 public boolean hasSequentialLookup() { 110 return false; 111 } 112 109 113 110 114 public Iterator<IFunctionParameter> getMembersIterator() { trunk/dtool/src/dtool/ast/definitions/DefinitionTemplate.java
r758 r866 55 55 } 56 56 57 58 59 57 public List<IScope> getSuperScopes() { 60 58 // TODO: template super scope … … 62 60 } 63 61 62 //@Override 63 public boolean hasSequentialLookup() { 64 return false; 65 } 66 64 67 65 68 public Iterator<? extends IASTNode> getMembersIterator() { trunk/dtool/src/dtool/ast/definitions/EnumMember.java
r758 r866 14 14 public EnumMember(descent.internal.compiler.parser.EnumMember elem) { 15 15 super(elem); 16 convertNode(elem .ident);16 convertNode(elem); 17 17 this.value = Expression.convert(elem.value); 18 18 } trunk/dtool/src/dtool/ast/definitions/FunctionParameter.java
r758 r866 15 15 import dtool.refmodel.NodeUtil; 16 16 17 import static melnorme.miscutil.Assert.assertFail; 17 18 import static melnorme.miscutil.Assert.assertNotNull; 18 19 … … 28 29 29 30 30 if(elem.type instanceof TypeBasic && ((TypeBasic)elem.type).ty.name == null) 31 if(elem.type instanceof TypeBasic && ((TypeBasic)elem.type).ty.name == null) { 32 assertFail(); 31 33 this.type = null; 32 else34 } else 33 35 this.type = ReferenceConverter.convertType(elem.type); 34 36 assertNotNull(this.type); trunk/dtool/src/dtool/ast/definitions/Module.java
r804 r866 151 151 } 152 152 153 //@Override 153 154 public List<IScope> getSuperScopes() { 154 155 return null; 155 156 } 157 158 //@Override 159 public boolean hasSequentialLookup() { 160 return false; 161 } 156 162 163 164 //@Override 157 165 public Iterator<? extends ASTNeoNode> getMembersIterator() { 158 166 return Arrays.asList(members).iterator(); trunk/dtool/src/dtool/ast/definitions/NamelessParameter.java
r758 r866 12 12 import static melnorme.miscutil.Assert.assertNotNull; 13 13 14 15 /** 16 * A nameless function parameter, such as in: <br> 17 * <code> void func(int, int); </code> 18 */ 14 19 public class NamelessParameter extends ASTNeoNode implements IFunctionParameter { 15 20 trunk/dtool/src/dtool/ast/definitions/NativeDefUnit.java
r773 r866 16 16 public abstract class NativeDefUnit extends DefUnit implements INativeDefUnit, IScopeNode { 17 17 18 /** A module like class, contained all native defunits. */ 18 19 public static class NativesScope implements IScope { 19 20 … … 29 30 return this; 30 31 } 31 32 //@Override33 public IScope getAdaptedScope() {34 return this;35 }36 32 37 33 //@Override 38 34 public List<IScope> getSuperScopes() { 39 35 return null; 36 } 37 38 //@Override 39 public boolean hasSequentialLookup() { 40 return false; 40 41 } 41 42 … … 84 85 public abstract IScopeNode getMembersScope(); 85 86 87 public boolean hasSequentialLookup() { 88 return false; 89 } 90 86 91 //public abstract IScope getSuperScope(); 87 92 trunk/dtool/src/dtool/ast/expressions/ExpCall.java
r758 r866 46 46 } 47 47 48 DefUnitSearch search = new DefUnitSearch("opCall", this);48 DefUnitSearch search = new DefUnitSearch("opCall", null); 49 49 ReferenceResolver.findDefUnitInScope(defUnit.getMembersScope(), search); 50 50 for (Iterator<DefUnit> iter = search.getDefUnits().iterator(); iter.hasNext();) { trunk/dtool/src/dtool/ast/references/CommonRefQualified.java
r758 r866 52 52 public static void doQualifiedSearch(CommonDefUnitSearch search, CommonRefQualified qref) { 53 53 Collection<DefUnit> defunits = qref.findRootDefUnits(); 54 findDefUnitIn DefUnitScopes(defunits, search);54 findDefUnitInMultipleDefUnitScopes(defunits, search); 55 55 } 56 56 57 public static void findDefUnitIn DefUnitScopes(57 public static void findDefUnitInMultipleDefUnitScopes( 58 58 Collection<DefUnit> defunits, CommonDefUnitSearch search) { 59 59 if(defunits == null) trunk/dtool/src/dtool/ast/references/CommonRefSingle.java
r758 r866 12 12 import dtool.refmodel.DefUnitSearch; 13 13 import dtool.refmodel.IScopeNode; 14 import dtool.refmodel.NodeUtil;15 14 import dtool.refmodel.PrefixDefUnitSearch; 16 15 import dtool.refmodel.ReferenceResolver; … … 46 45 @Override 47 46 public Collection<DefUnit> findTargetDefUnits(boolean findOneOnly) { 48 DefUnitSearch search = new DefUnitSearch(name, this, findOneOnly); 47 DefUnitSearch search = new DefUnitSearch(name, this, this.getOffset(), 48 findOneOnly); 49 49 CommonRefSingle.doSearchForPossiblyQualifiedSingleRef(search, this); 50 50 return search.getDefUnits(); … … 73 73 } 74 74 } 75 IScopeNode lookupScope = NodeUtil.getOuterScope(refSingle); 75 76 IScopeNode lookupScope = ReferenceResolver.getStartingScope(refSingle); 76 77 ReferenceResolver.findDefUnitInExtendedScope(lookupScope, search); 77 78 } trunk/dtool/src/dtool/ast/references/NamedReference.java
r804 r866 15 15 16 16 /** Return wheter this reference can match the given defunit. 17 * This is a very lightweight method that only compare dthe defunit's17 * This is a very lightweight method that only compares the defunit's 18 18 * name with the identifier of this reference, if any. 19 19 * XXX: Qualified refs, how should they compare? trunk/dtool/src/dtool/ast/references/RefImportSelection.java
r758 r866 44 44 @Override 45 45 public Collection<DefUnit> findTargetDefUnits(boolean findOneOnly) { 46 DefUnitSearch search = new DefUnitSearch(name, (Reference)this, findOneOnly);46 DefUnitSearch search = new DefUnitSearch(name, this, findOneOnly); 47 47 RefModule refMod = impSel.moduleRef; 48 CommonRefQualified.findDefUnitIn DefUnitScopes(refMod.findTargetDefUnits(findOneOnly), search);48 CommonRefQualified.findDefUnitInMultipleDefUnitScopes(refMod.findTargetDefUnits(findOneOnly), search); 49 49 return search.getDefUnits(); 50 50 } … … 53 53 public void doSearch(PrefixDefUnitSearch search) { 54 54 RefModule refMod = impSel.moduleRef; 55 CommonRefQualified.findDefUnitInDefUnitScopes(refMod.findTargetDefUnits(false), search); 55 CommonRefQualified.findDefUnitInMultipleDefUnitScopes( 56 refMod.findTargetDefUnits(false), search); 56 57 } 57 58 trunk/dtool/src/dtool/ast/references/RefTemplateInstance.java
r804 r866 29 29 Assert.isTrue(tplIdent.ident != null); 30 30 this.name = new String(tplIdent.ident); 31 if (t his.tiargs == null)31 if (tiargs == null) 32 32 this.tiargs = ASTNeoNode.NO_ELEMENTS; 33 33 else trunk/dtool/src/dtool/ast/statements/BlockStatement.java
r773 r866 64 64 } 65 65 66 public boolean hasSequentialLookup() { 67 return true; 68 } 69 66 70 //@Override 67 public IScope getAdaptedScope() {71 /*public IScope getAdaptedScope() { 68 72 return this; 69 } 73 }*/ 70 74 71 75 } trunk/dtool/src/dtool/ast/statements/StatementForeach.java
r758 r866 18 18 public StatementForeach(ForeachStatement elem) { 19 19 convertNode(elem); 20 // TODO: foreach parameters, unitest too.20 // TODO: implement foreach parameters, and unittest them. 21 21 //this.params = new IFunctionParameter[elem.arguments.size()]; 22 22 //DescentASTConverter.convertMany(elem.arguments.toArray(), this.params); trunk/dtool/src/dtool/ast/statements/StatementForeachRange.java
r758 r866 8 8 import dtool.ast.expressions.Expression; 9 9 import dtool.ast.expressions.Resolvable; 10 import dtool.descentadapter.DescentASTConverter;11 10 12 11 public class StatementForeachRange extends Statement { … … 20 19 public StatementForeachRange(ForeachRangeStatement elem) { 21 20 convertNode(elem); 22 this.param = (IFunctionParameter) DescentASTConverter.convertElem(elem.arg); 21 // TODO: implement foreach parameters, and unittest them. 22 //this.param = (IFunctionParameter) DescentASTConverter.convertElem(elem.arg); 23 this.param = null; 23 24 this.lwr = Expression.convert(elem.lwr); 24 25 this.upr = Expression.convert(elem.upr); trunk/dtool/src/dtool/ast/statements/StatementTry.java
r773 r866 58 58 } 59 59 60 //@Override 61 public IScope getAdaptedScope() { 62 return this; 60 public boolean hasSequentialLookup() { 61 return false; 63 62 } 63 64 64 } 65 65 trunk/dtool/src/dtool/refmodel/CommonDefUnitSearch.java
r758 r866 27 27 28 28 /** Flag for stop searching when suitable matches are found. */ 29 protected boolean findOnlyOne;29 protected final boolean findOnlyOne; 30 30 /** The scope where the reference is located. 31 31 * Used for protection access restrictions. */ 32 protected IScopeNode refScope; 33 32 protected final IScopeNode refScope; 33 /** The offset of the reference. 34 * Used to check availability in statement scopes. */ 35 protected final int refOffset; 34 36 /** Cached value of the reference's module scope. */ 35 37 protected IScope refModuleScope; … … 38 40 39 41 42 public CommonDefUnitSearch(IScopeNode refScope, int refOffset) { 43 this(refScope, refOffset, false); 44 } 40 45 41 public CommonDefUnitSearch(IScopeNode refScope ) {46 public CommonDefUnitSearch(IScopeNode refScope, int refOffset, boolean findOneOnly) { 42 47 this.searchedScopes = new ArrayList<IScope>(4); 43 48 this.refScope = refScope; 49 this.refOffset = refOffset; 50 this.findOnlyOne = findOneOnly; 44 51 } 45 52 53 46 54 /** Return whether we have already search the given scope or not. */ 47 55 public boolean hasSearched(IScope scope) { trunk/dtool/src/dtool/refmodel/DefUnitSearch.java
r758 r866 6 6 import dtool.ast.declarations.PartialPackageDefUnit; 7 7 import dtool.ast.definitions.DefUnit; 8 import dtool.ast. expressions.Resolvable;8 import dtool.ast.references.Reference; 9 9 10 10 /** … … 19 19 protected boolean matchesArePartialDefUnits = false; 20 20 21 public DefUnitSearch(String name, Resolvable searchref) { 22 this(name, searchref, false); 21 @Deprecated 22 public DefUnitSearch(String searchName, Reference searchref) { 23 this(searchName, searchref, -1, false); 23 24 } 24 25 25 public DefUnitSearch(String searchName, Resolvable searchref, boolean findOneOnly) { 26 super(NodeUtil.getOuterScope(searchref)); 26 @Deprecated 27 public DefUnitSearch(String searchName, Reference searchref, int refOffset) { 28 this(searchName, searchref, refOffset, false); 29 } 30 31 @Deprecated 32 public DefUnitSearch(String searchName, Reference searchref, 33 boolean findOneOnly) { 34 this(searchName, searchref, -1, findOneOnly); 35 } 36 37 @Deprecated 38 public DefUnitSearch(String searchName, Reference searchref, 39 int refOffset, boolean findOneOnly) { 40 super(NodeUtil.getOuterScope(searchref), refOffset, findOneOnly); 27 41 this.searchName = searchName; 28 this.findOnlyOne = findOneOnly;29 42 //defunits = new ArrayDeque<DefUnit>(4); 30 43 } trunk/dtool/src/dtool/refmodel/IScope.java
r804 r866 7 7 8 8 /** 9 * Gives access to the scope's DefUnits, and to super scopes. 9 * A scope is a list of declarations and or statements. 10 * Some of those declarations may be DefUnits. 11 * A scope may have several super scopes, and has exactly one outer scope. 12 * A scope may be a statement block, which has different lookup rules. 10 13 */ 11 public interface IScope extends IScopeAdaptable{14 public interface IScope { 12 15 13 16 … … 24 27 IScope getModuleScope(); 25 28 29 /** Returns whether this scope has a sequential lookup, 30 * such as statement scopes. */ 31 boolean hasSequentialLookup(); 32 26 33 /** For UI printing */ 27 34 String toStringAsElement(); 35 36 28 37 } trunk/dtool/src/dtool/refmodel/PrefixDefUnitSearch.java
r833 r866 2 2 3 3 import static melnorme.miscutil.Assert.assertFail; 4 import static melnorme.miscutil.Assert.assertNotNull; 5 6 import java.util.Iterator; 4 7 5 8 import org.eclipse.dltk.core.ISourceModule; … … 38 41 39 42 public PrefixDefUnitSearch(PrefixSearchOptions searchOptions, 43 IScopeNode refScope, int refOffset, 40 44 IDefUnitMatchAccepter defUnitAccepter) { 41 super( null);45 super(refScope, refOffset); 42 46 this.searchOptions = searchOptions; 43 47 this.defUnitAccepter = defUnitAccepter; … … 61 65 @Override 62 66 public void addMatch(DefUnit defUnit) { 63 defUnitAccepter.accept(defUnit, searchOptions); 64 } 65 67 if(notOccluded(defUnit)) 68 defUnitAccepter.accept(defUnit, searchOptions); 69 } 70 71 public boolean notOccluded(DefUnit newDefUnit) { 72 Iterator<DefUnit> iter = defUnitAccepter.getResultsIterator(); 73 while (iter.hasNext()) { 74 DefUnit defunit = iter.next(); 75 if(defunit.toStringAsElement().equals(newDefUnit.toStringAsElement())) 76 return false; 77 } 78 return true; 79 }; 80 66 81 public static interface IDefUnitMatchAccepter { 67 82 void accept(DefUnit defUnit, PrefixSearchOptions searchOptions); 83 84 Iterator<DefUnit> getResultsIterator(); 68 85 } 69 86 … … 111 128 // : Do actual completion search 112 129 130 131 ASTNeoNode node = ASTNodeFinder.findElement(neoModule, offset); 132 assertNotNull(node); 133 session.invokeNode = node; 113 134 PrefixSearchOptions searchOptions = new PrefixSearchOptions(); 114 PrefixDefUnitSearch search = new PrefixDefUnitSearch(searchOptions, defUnitAccepter);115 116 ASTNeoNode node = ASTNodeFinder.findElement(neoModule, offset);117 session.invokeNode = node;118 search.refScope = NodeUtil.getScopeNode(node); 135 IScopeNode refScope = NodeUtil.getScopeNode(node); 136 PrefixDefUnitSearch search; 137 search = new PrefixDefUnitSearch(searchOptions, 138 refScope, offset, defUnitAccepter); 139 119 140 120 141 if(node instanceof NamedReference) { … … 124 145 RefIdentifier refIdent = (RefIdentifier) node; 125 146 if(!parserAdapter.isQualifiedDotFixSearch) { 126 setupPrefixedSearch 2(searchOptions,127 offset,refIdent.getOffset(), refIdent.name);147 setupPrefixedSearch(searchOptions, offset, 148 refIdent.getOffset(), refIdent.name); 128 149 } 129 150 } else if(node instanceof CommonRefQualified) { … … 137 158 138 159 if(offset <= idEndPos) { 139 setupPrefixedSearch 2(searchOptions,140 offset,refTpl.getOffset(), refTpl.name);160 setupPrefixedSearch(searchOptions, offset, 161 refTpl.getOffset(), refTpl.name); 141 162 } else if(lastToken.value == TOK.TOKnot) { 142 163 return "Invalid Context:" + lastToken; … … 144 165 } else if(node instanceof RefModule) { 145 166 RefModule refMod = (RefModule) node; 146 setupPrefixedSearch2(searchOptions, offset, refMod.getOffset(), refMod.toStringAsElement()); 167 setupPrefixedSearch(searchOptions, offset, 168 refMod.getOffset(), refMod.toStringAsElement()); 147 169 } else if (node instanceof RefImportSelection) { 148 170 RefImportSelection refImpSel = (RefImportSelection) node; 149 setupPrefixedSearch2(searchOptions, offset, refImpSel.getOffset(), refImpSel.name); 171 setupPrefixedSearch(searchOptions, offset, 172 refImpSel.getOffset(), refImpSel.name); 150 173 } else { 151 174 assertFail(); … … 158 181 } 159 182 160 // Determine a scope for an unprefix search 183 // Since picked node was not a reference, 184 // determine appropriate scope search parameters 161 185 IScopeNode scope; 162 186 while(true) { 187 assertNotNull(node); 163 188 scope = isValidCompletionScope(node); 164 189 if(scope != null) … … 175 200 } 176 201 177 private static void setupPrefixedSearch 2(PrefixSearchOptions searchOptions,202 private static void setupPrefixedSearch(PrefixSearchOptions searchOptions, 178 203 final int offset, int nameOffset, String name) { 179 204 int prefixLen = offset - nameOffset; trunk/dtool/src/dtool/refmodel/ReferenceResolver.java
r758 r866 14 14 import dtool.ast.d
