|
|
@ -224,20 +224,20 @@ public class InvocationExprent extends Exprent { |
|
|
|
else { |
|
|
|
else { |
|
|
|
|
|
|
|
|
|
|
|
if (instance != null && instance.type == Exprent.EXPRENT_VAR) { |
|
|
|
if (instance != null && instance.type == Exprent.EXPRENT_VAR) { |
|
|
|
VarExprent instvar = (VarExprent)instance; |
|
|
|
VarExprent instVar = (VarExprent)instance; |
|
|
|
VarVersionPair varpaar = new VarVersionPair(instvar); |
|
|
|
VarVersionPair varPair = new VarVersionPair(instVar); |
|
|
|
|
|
|
|
|
|
|
|
VarProcessor vproc = instvar.getProcessor(); |
|
|
|
VarProcessor varProc = instVar.getProcessor(); |
|
|
|
if (vproc == null) { |
|
|
|
if (varProc == null) { |
|
|
|
MethodWrapper current_meth = (MethodWrapper)DecompilerContext.getProperty(DecompilerContext.CURRENT_METHOD_WRAPPER); |
|
|
|
MethodWrapper currentMethod = (MethodWrapper)DecompilerContext.getProperty(DecompilerContext.CURRENT_METHOD_WRAPPER); |
|
|
|
if (current_meth != null) { |
|
|
|
if (currentMethod != null) { |
|
|
|
vproc = current_meth.varproc; |
|
|
|
varProc = currentMethod.varproc; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
String this_classname = null; |
|
|
|
String this_classname = null; |
|
|
|
if (vproc != null) { |
|
|
|
if (varProc != null) { |
|
|
|
this_classname = vproc.getThisVars().get(varpaar); |
|
|
|
this_classname = varProc.getThisVars().get(varPair); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (this_classname != null) { |
|
|
|
if (this_classname != null) { |
|
|
@ -334,7 +334,7 @@ public class InvocationExprent extends Exprent { |
|
|
|
boolean firstParameter = true; |
|
|
|
boolean firstParameter = true; |
|
|
|
int start = isEnum ? 2 : 0; |
|
|
|
int start = isEnum ? 2 : 0; |
|
|
|
for (int i = start; i < lstParameters.size(); i++) { |
|
|
|
for (int i = start; i < lstParameters.size(); i++) { |
|
|
|
if (sigFields == null || null == sigFields.get(i)) { |
|
|
|
if (sigFields == null || sigFields.get(i) == null) { |
|
|
|
if (!firstParameter) { |
|
|
|
if (!firstParameter) { |
|
|
|
buf.append(", "); |
|
|
|
buf.append(", "); |
|
|
|
} |
|
|
|
} |
|
|
@ -513,8 +513,8 @@ public class InvocationExprent extends Exprent { |
|
|
|
// IMatchable implementation
|
|
|
|
// IMatchable implementation
|
|
|
|
// *****************************************************************************
|
|
|
|
// *****************************************************************************
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
public boolean match(MatchNode matchNode, MatchEngine engine) { |
|
|
|
public boolean match(MatchNode matchNode, MatchEngine engine) { |
|
|
|
|
|
|
|
|
|
|
|
if (!super.match(matchNode, engine)) { |
|
|
|
if (!super.match(matchNode, engine)) { |
|
|
|
return false; |
|
|
|
return false; |
|
|
|
} |
|
|
|
} |
|
|
@ -522,33 +522,25 @@ public class InvocationExprent extends Exprent { |
|
|
|
for (Entry<MatchProperties, RuleValue> rule : matchNode.getRules().entrySet()) { |
|
|
|
for (Entry<MatchProperties, RuleValue> rule : matchNode.getRules().entrySet()) { |
|
|
|
RuleValue value = rule.getValue(); |
|
|
|
RuleValue value = rule.getValue(); |
|
|
|
|
|
|
|
|
|
|
|
switch(rule.getKey()) { |
|
|
|
MatchProperties key = rule.getKey(); |
|
|
|
case EXPRENT_INVOCATION_PARAMETER: |
|
|
|
if (key == MatchProperties.EXPRENT_INVOCATION_PARAMETER) { |
|
|
|
if(value.isVariable()) { |
|
|
|
if (value.isVariable() && (value.parameter >= lstParameters.size() || |
|
|
|
if(value.parameter < lstParameters.size()) { |
|
|
|
!engine.checkAndSetVariableValue(value.value.toString(), lstParameters.get(value.parameter)))) { |
|
|
|
if(!engine.checkAndSetVariableValue(value.value.toString(), lstParameters.get(value.parameter))) { |
|
|
|
|
|
|
|
return false; |
|
|
|
return false; |
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
|
|
|
|
return false; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
else if (key == MatchProperties.EXPRENT_INVOCATION_CLASS) { |
|
|
|
break; |
|
|
|
|
|
|
|
case EXPRENT_INVOCATION_CLASS: |
|
|
|
|
|
|
|
if (!value.value.equals(this.classname)) { |
|
|
|
if (!value.value.equals(this.classname)) { |
|
|
|
return false; |
|
|
|
return false; |
|
|
|
} |
|
|
|
} |
|
|
|
break; |
|
|
|
} |
|
|
|
case EXPRENT_INVOCATION_SIGNATURE: |
|
|
|
else if (key == MatchProperties.EXPRENT_INVOCATION_SIGNATURE) { |
|
|
|
if (!value.value.equals(this.name + this.stringDescriptor)) { |
|
|
|
if (!value.value.equals(this.name + this.stringDescriptor)) { |
|
|
|
return false; |
|
|
|
return false; |
|
|
|
} |
|
|
|
} |
|
|
|
break; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return true; |
|
|
|
return true; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |