Browse Source

updated tests for [method|execution] binary join point detection.

added narrower knownLimitation test
tags/V1_1_0_RC2
wisberg 21 years ago
parent
commit
2a0ce5da6e

+ 131
- 0
tests/ajcTests.xml View File

@@ -5913,4 +5913,135 @@
<compile files="ClassForName.java"/>
<run class="ClassForName"/>
</ajc-test>

<ajc-test dir="new/binaryWarnings/src" pr="37020"
title="declare warnings on main">
<compile files="aspects/MainWarnings.java,app/Main.java">
<message kind="warning" file="app/Main.java"
line="6" text="set(String Main.staticString)"/>
<message kind="warning" file="app/Main.java"
line="8" text="set(String Main.s)"/>
<message kind="warning" file="app/Main.java"
line="12" text="get(String Main.staticString)"/>
<message kind="warning" file="app/Main.java"
line="14" text="set(String Main.staticString)"/>
<message kind="warning" file="app/Main.java"
line="16" text="call(Main.new())"/>
<message kind="warning" file="app/Main.java"
line="19" text="call(void Main.go(String))"/>
<message kind="warning" file="app/Main.java"
line="23" text="execution(Main.new())"/>
<message kind="warning" file="app/Main.java"
line="26" text="execution(void Main.go(String))"/>
<message kind="warning" file="app/Main.java"
line="29" text="get(String Main.s)"/>
<message kind="warning" file="app/Main.java"
line="31" text="set(String Main.s)"/>
<message kind="warning" file="app/Main.java"
line="33" text="handler(RuntimeException)"/>
<message kind="warning" file="app/Main.java"
line="35" text="withincode(void Main.go(String))"/>
<message kind="warning" file="app/Main.java"
line="42" text="withincode(void Main.stop())"/>
<message kind="warning" file="app/Main.java"
line="50" text="preinitialization(app.C.new())"/>
</compile>
<run class="app.Main"/>
</ajc-test>

<ajc-test dir="new/binaryWarnings/src" pr="37020"
title="declare warnings on binary javac 1.4 classes">
<compile files="aspects/MainWarnings.java,../injars/app-javac-1.4.jar">
<message kind="warning" file="app/Main.java"
line="6" text="set(String Main.staticString)"/>
<message kind="warning" file="app/Main.java"
line="8" text="set(String Main.s)"/>
<message kind="warning" file="app/Main.java"
line="12" text="get(String Main.staticString)"/>
<message kind="warning" file="app/Main.java"
line="14" text="set(String Main.staticString)"/>
<message kind="warning" file="app/Main.java"
line="16" text="call(Main.new())"/>
<message kind="warning" file="app/Main.java"
line="19" text="call(void Main.go(String))"/>
<message kind="warning" file="app/Main.java"
line="23" text="execution(Main.new())"/>
<message kind="warning" file="app/Main.java"
line="26" text="execution(void Main.go(String))"/>
<message kind="warning" file="app/Main.java"
line="29" text="get(String Main.s)"/>
<message kind="warning" file="app/Main.java"
line="31" text="set(String Main.s)"/>
<message kind="warning" file="app/Main.java"
line="33" text="handler(RuntimeException)"/>
<message kind="warning" file="app/Main.java"
line="35" text="withincode(void Main.go(String))"/>
<message kind="warning" file="app/Main.java"
line="42" text="withincode(void Main.stop())"/>
<message kind="warning" file="app/Main.java"
line="50" text="preinitialization(app.C.new())"/>
</compile>
<run class="app.Main"/>
</ajc-test>
<ajc-test dir="new/binaryWarnings/src" pr="37023"
title="declare warnings on binary ajc 1.1 classes">
<compile files="aspects/MainWarnings.java,../injars/app-ajc-1.1.jar">
<message kind="warning" file="app/Main.java"
line="6" text="set(String Main.staticString)"/>
<message kind="warning" file="app/Main.java"
line="8" text="set(String Main.s)"/>
<message kind="warning" file="app/Main.java"
line="12" text="get(String Main.staticString)"/>
<message kind="warning" file="app/Main.java"
line="14" text="set(String Main.staticString)"/>
<message kind="warning" file="app/Main.java"
line="16" text="call(Main.new())"/>
<message kind="warning" file="app/Main.java"
line="19" text="call(void Main.go(String))"/>
<message kind="warning" file="app/Main.java"
line="23" text="execution(Main.new())"/>
<message kind="warning" file="app/Main.java"
line="26" text="execution(void Main.go(String))"/>
<message kind="warning" file="app/Main.java"
line="29" text="get(String Main.s)"/>
<message kind="warning" file="app/Main.java"
line="31" text="set(String Main.s)"/>
<message kind="warning" file="app/Main.java"
line="33" text="handler(RuntimeException)"/>
<message kind="warning" file="app/Main.java"
line="35" text="withincode(void Main.go(String))"/>
<message kind="warning" file="app/Main.java"
line="42" text="withincode(void Main.stop())"/>
<message kind="warning" file="app/Main.java"
line="50" text="preinitialization(app.C.new())"/>
</compile>
<run class="app.Main"/>
</ajc-test>

<ajc-test dir="new/binaryWarnings/src" pr="37020"
keywords="knownLimitation"
comment="source loc of binary jp depends on first code, not block start"
title="declare error on handler/method execution with no code on binary ajc 1.1 classes">
<compile files="aspects/MainExecStartLinesErrors.java,../injars/appStartLines-ajc-1.1.jar">
<message kind="error" file="app/MainExecStartLines.java"
line="6" text="execution(void MainExecStartLines.main(String[]))"/>
<message kind="error" file="app/MainExecStartLines.java"
line="17" text="handler(RuntimeException)"/>
</compile>
</ajc-test>

<ajc-test dir="new/binaryWarnings/src" pr="37020"
keywords="knownLimitation"
comment="source loc of binary jp depends on first code, not block start; XXX need javac inlining example"
title="declare error on handler/method execution with no code on binary javac 1.4 classes">
<compile files="aspects/MainExecStartLinesErrors.java,../injars/appStartLines-javac-1.4.jar">
<message kind="error" file="app/MainExecStartLines.java"
line="6" text="execution(void MainExecStartLines.main(String[]))"/>
<message kind="error" file="app/MainExecStartLines.java"
line="17" text="handler(RuntimeException)"/>
</compile>
</ajc-test>

</suite>

+ 21
- 0
tests/ajcTestsFailing.xml View File

@@ -118,5 +118,26 @@
<run class="app.Main"/>
</ajc-test>

<ajc-test dir="new/binaryWarnings/src" pr="37020"
keywords="knownLimitation"
title="declare error on handler/method execution with no code on binary ajc 1.1 classes">
<compile files="aspects/MainExecStartLinesErrors.java,../injars/appStartLines-ajc-1.1.jar">
<message kind="error" file="app/MainExecStartLines.java"
line="6" text="execution(void MainExecStartLines.main(String[]))"/>
<message kind="error" file="app/MainExecStartLines.java"
line="17" text="handler(RuntimeException)"/>
</compile>
</ajc-test>

<ajc-test dir="new/binaryWarnings/src" pr="37020"
keywords="knownLimitation"
title="declare error on handler/method execution with no code on binary javac 1.4 classes">
<compile files="aspects/MainExecStartLinesErrors.java,../injars/appStartLines-javac-1.4.jar">
<message kind="error" file="app/MainExecStartLines.java"
line="6" text="execution(void MainExecStartLines.main(String[]))"/>
<message kind="error" file="app/MainExecStartLines.java"
line="17" text="handler(RuntimeException)"/>
</compile>
</ajc-test>

</suite>

BIN
tests/new/binaryWarnings/injars/app-ajc-1.1.jar View File


BIN
tests/new/binaryWarnings/injars/app-javac-1.4.jar View File


BIN
tests/new/binaryWarnings/injars/appStartLines-ajc-1.1.jar View File


BIN
tests/new/binaryWarnings/injars/appStartLines-javac-1.4.jar View File


+ 4
- 0
tests/new/binaryWarnings/readme.txt View File

@@ -23,6 +23,10 @@ Bugs: 37020, 37021, 37023
- all test specifications should have exactly the same warnings
as each other as as specified in MainWarnings.java

- the ExecStartLine variants show that for binary join points,
we detect the first line of code in the associated block,
not the first line of the block. This is a known limitation.

To build the injar sources from the src directory:

Using javac:

+ 2
- 2
tests/new/binaryWarnings/src/app/Main.java View File

@@ -23,14 +23,14 @@ public class Main {
Main() { // 23
}

void go(String s) { // 26
void go(String s) { String t = "..".substring(0); // 26
try {

String temp = this.s; // 29

this.s = temp + ", " + s; // 31

} catch (RuntimeException e) { // 33
} catch (RuntimeException e) { String u = "..".substring(0); // 33
stop(); // 35


+ 28
- 0
tests/new/binaryWarnings/src/app/MainExecStartLines.java View File

@@ -0,0 +1,28 @@

package app;

public class MainExecStartLines {

public static void main(String[] args) // 6
{ // 7

String t = "....".substring(0); // 12
}
void go(String s) {
try {
String t = "....".substring(0);
} catch (RuntimeException e) { // 17


String t = "....".substring(0); // 20
}
}
}
/*
* known limitation:
* For static shadow of [method|handler] execution join points
* in binary form, only can detect first line of code.
*/

+ 16
- 0
tests/new/binaryWarnings/src/aspects/MainExecStartLinesErrors.java View File

@@ -0,0 +1,16 @@

package aspects;

import app.MainExecStartLines;

// WARNING: do not change message text without changing test specification
public privileged aspect MainExecStartLinesErrors {

declare error : execution(void MainExecStartLines.main(String[]))
: "execution(void MainExecStartLines.main(String[]))";

declare error : handler(RuntimeException)
&& within(MainExecStartLines)
: "handler(RuntimeException) && within(MainExecStartLines)";

}

Loading…
Cancel
Save