diff options
Diffstat (limited to 'bundles/org.eclipse.wst.jsdt.core/src/org/eclipse/wst/jsdt/internal/core/Member.java')
-rw-r--r-- | bundles/org.eclipse.wst.jsdt.core/src/org/eclipse/wst/jsdt/internal/core/Member.java | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/bundles/org.eclipse.wst.jsdt.core/src/org/eclipse/wst/jsdt/internal/core/Member.java b/bundles/org.eclipse.wst.jsdt.core/src/org/eclipse/wst/jsdt/internal/core/Member.java index 15d686a8..32658098 100644 --- a/bundles/org.eclipse.wst.jsdt.core/src/org/eclipse/wst/jsdt/internal/core/Member.java +++ b/bundles/org.eclipse.wst.jsdt.core/src/org/eclipse/wst/jsdt/internal/core/Member.java @@ -227,9 +227,59 @@ public IJavaScriptElement getHandleFromMemento(String token, MementoTokenizer me if (!memento.hasMoreTokens()) return this; String typeSignature = memento.nextToken(); return new LocalVariable(this, varName, declarationStart, declarationEnd, nameStart, nameEnd, typeSignature); + case JEM_METHOD: + if (!memento.hasMoreTokens()) return this; + String selector = memento.nextToken(); + ArrayList params = new ArrayList(); + nextParam: while (memento.hasMoreTokens()) { + token = memento.nextToken(); + switch (token.charAt(0)) { + case JEM_TYPE: + case JEM_TYPE_PARAMETER: + break nextParam; +// case JEM_METHOD: +// if (!memento.hasMoreTokens()) return this; +// String param = memento.nextToken(); +// StringBuffer buffer = new StringBuffer(); +// while (param.length() == 1 && Signature.C_ARRAY == param.charAt(0)) { // backward compatible with 3.0 mementos +// buffer.append(Signature.C_ARRAY); +// if (!memento.hasMoreTokens()) return this; +// param = memento.nextToken(); +// } +// params.add(buffer.toString() + param); +// break; + default: + break nextParam; + } + } + String[] parameters = new String[params.size()]; + params.toArray(parameters); + JavaElement method = (JavaElement)getFunction(selector, parameters); + if (token.charAt(0) == JEM_COUNT) { + if (!memento.hasMoreTokens()) return method; + memento.nextToken(); // JEM_COUNT + if (!memento.hasMoreTokens()) return method; + token = memento.nextToken(); + } + switch (token.charAt(0)) { + case JEM_TYPE: + case JEM_TYPE_PARAMETER: + case JEM_LOCALVARIABLE: + return method.getHandleFromMemento(token, memento, workingCopyOwner); + case JEM_METHOD: + if (memento.hasMoreTokens()) + return method.getHandleFromMemento(token, memento, workingCopyOwner); + default: + return method; + } } return null; } + +public IFunction getFunction(String selector, String[] parameterTypeSignatures) { + return new SourceMethod(this, selector, parameterTypeSignatures); +} + /** * @see JavaElement#getHandleMemento() */ |