Skip to content

Commit

Permalink
LocalVarsBinding, LocalVarNamesBinding support ignore this
Browse files Browse the repository at this point in the history
  • Loading branch information
hengyunabc committed Mar 21, 2024
1 parent fc21e74 commit 3333612
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ public Binding parse(Annotation annotation) {
public static @interface LocalVars {

String excludePattern() default "";

boolean ignoreThis() default false;
boolean optional() default false;

}
Expand All @@ -93,7 +93,7 @@ public static class LocalVarsBindingParser implements BindingParser {
public Binding parse(Annotation annotation) {
if (annotation instanceof LocalVars){
LocalVars LocalVars = (LocalVars) annotation;
return new LocalVarsBinding(LocalVars.excludePattern());
return new LocalVarsBinding(LocalVars.excludePattern(), LocalVars.ignoreThis());
}
return new LocalVarsBinding();
}
Expand All @@ -108,6 +108,8 @@ public Binding parse(Annotation annotation) {

String excludePattern() default "";

boolean ignoreThis() default false;

boolean optional() default false;

}
Expand All @@ -116,7 +118,7 @@ public static class LocalVarNamesBindingParser implements BindingParser {
public Binding parse(Annotation annotation) {
if (annotation instanceof LocalVarNames){
LocalVarNames localVarNames = (LocalVarNames) annotation;
return new LocalVarNamesBinding(localVarNames.excludePattern());
return new LocalVarNamesBinding(localVarNames.excludePattern(), localVarNames.ignoreThis());
}
return new LocalVarNamesBinding();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,14 @@
public class LocalVarNamesBinding extends Binding {

private String excludePattern;
/**
* 是否在变量中忽略掉 this
*/
private boolean ignoreThis;

public LocalVarNamesBinding(String excludePattern) {
public LocalVarNamesBinding(String excludePattern, boolean ignoreThis) {
this.excludePattern = excludePattern;
this.ignoreThis = ignoreThis;
}

public LocalVarNamesBinding() {
Expand All @@ -31,7 +36,12 @@ public void pushOntoStack(InsnList instructions, BindingContext bindingContext)
Iterator<LocalVariableNode> it = localVariables.iterator();
while(it.hasNext()){
LocalVariableNode localVariableNode = it.next();
if (MatchUtils.wildcardMatch(localVariableNode.name,excludePattern)) it.remove();
if (MatchUtils.wildcardMatch(localVariableNode.name,excludePattern)) {
it.remove();
}
if (ignoreThis && localVariableNode.name.equals("this")) {
it.remove();
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,11 @@
public class LocalVarsBinding extends Binding{

private String excludePattern;
private boolean ignoreThis;

public LocalVarsBinding(String excludePattern) {
public LocalVarsBinding(String excludePattern, boolean ignoreThis) {
this.excludePattern = excludePattern;
this.ignoreThis = ignoreThis;
}

public LocalVarsBinding() {
Expand All @@ -37,7 +39,12 @@ public void pushOntoStack(InsnList instructions, BindingContext bindingContext)
Iterator<LocalVariableNode> it = localVariables.iterator();
while(it.hasNext()){
LocalVariableNode localVariableNode = it.next();
if (MatchUtils.wildcardMatch(localVariableNode.name,excludePattern)) it.remove();
if (MatchUtils.wildcardMatch(localVariableNode.name, excludePattern)) {
it.remove();
}
if (ignoreThis && localVariableNode.name.equals("this")) {
it.remove();
}
}
}

Expand Down

0 comments on commit 3333612

Please sign in to comment.