Browse Source

Fix 541325 - Support is(AbstractType)

tags/V1_9_3RC1
Andy Clement 5 years ago
parent
commit
450c1fe057

+ 2
- 0
org.aspectj.matcher/src/org/aspectj/weaver/patterns/PatternParser.java View File

@@ -1066,6 +1066,8 @@ public class PatternParser {
typeIsPattern = new TypeCategoryTypePattern(TypeCategoryTypePattern.ANNOTATION);
} else if (category.equals("FinalType")) {
typeIsPattern = new TypeCategoryTypePattern(TypeCategoryTypePattern.FINAL);
} else if (category.equals("AbstractType")) {
typeIsPattern = new TypeCategoryTypePattern(TypeCategoryTypePattern.ABSTRACT);
}
}
if (typeIsPattern == null) {

+ 3
- 0
org.aspectj.matcher/src/org/aspectj/weaver/patterns/TypeCategoryTypePattern.java View File

@@ -42,6 +42,7 @@ public class TypeCategoryTypePattern extends TypePattern {
public static final int ENUM = 6;
public static final int ANNOTATION = 7;
public static final int FINAL = 8;
public static final int ABSTRACT = 9;

private int category;

@@ -136,6 +137,8 @@ public class TypeCategoryTypePattern extends TypePattern {
return type.isAnnotation();
case FINAL:
return Modifier.isFinal(type.getModifiers());
case ABSTRACT:
return Modifier.isAbstract(type.getModifiers());
}
return false;
}

+ 24
- 0
tests/bugs193/isAbstractType/Code.java View File

@@ -0,0 +1,24 @@
public class Code {
public static void main(String[] argv) {
new Code().run();
}

public void run() {
new Code3().run();
}
}

abstract class Code2 {
public void run() {
}
}

class Code3 extends Code2 {
}

aspect X {
before(): execution(* (!is(AbstractType)).run(..)) {
System.out.println(thisJoinPointStaticPart);
}
}


+ 24
- 0
tests/bugs193/isAbstractType/Code2.java View File

@@ -0,0 +1,24 @@
public class Code2 {
public static void main(String[] argv) {
new Code2().run();
}

public void run() {
new Helper2().run();
}
}

abstract class Helper {
public void run() {
}
}

class Helper2 extends Helper {
}

aspect X {
before(): execution(* (is(AbstractType)).run(..)) {
System.out.println(thisJoinPointStaticPart);
}
}


+ 8
- 0
tests/src/org/aspectj/systemtest/ajc193/Ajc193Tests.java View File

@@ -22,6 +22,14 @@ import junit.framework.Test;
*/
public class Ajc193Tests extends XMLBasedAjcTestCaseForJava10OrLater {

public void testIsAbstractType() {
runTest("is abstract");
}

public void testIsAbstractType2() {
runTest("is abstract - 2");
}
// ---

public static Test suite() {

+ 19
- 0
tests/src/org/aspectj/systemtest/ajc193/ajc193.xml View File

@@ -2,6 +2,25 @@

<suite>


<ajc-test dir="bugs193/isAbstractType" title="is abstract">
<compile files="Code.java" options="-1.8"/>
<run class="Code">
<stdout>
<line text="execution(void Code.run())"/>
</stdout>
</run>
</ajc-test>
<ajc-test dir="bugs193/isAbstractType" title="is abstract - 2">
<compile files="Code2.java" options="-1.8"/>
<run class="Code2">
<stdout>
<line text="execution(void Helper.run())"/>
</stdout>
</run>
</ajc-test>

<!--
<ajc-test dir="bugs191/var" title="var 3">
<compile files="Code3.java" options="-10">

Loading…
Cancel
Save