// with 1.5, i.e., wrong class version to load under 1.3
// so the class name can only be used reflectively
TestUtil.loadTestsReflectively(suite, "Aspectj5rtModuleTests", false);
- TestUtil.loadTestsReflectively(suite, "Loadtime5ModuleTests", false);
+ TestUtil.loadTestsReflectively(suite, "Loadtime515ModuleTests", false);
} else {
suite.addTest(TestUtil.skipTest("for 1.5"));
}
}
/**
- * @param s the String to parse for [on|off|true|false]
+ * @param input the String to parse for [on|off|true|false]
* @throws IllegalArgumentException if input is bad
**/
public static boolean parseBoolean(String input) {
}
/**
- * @param s the String to parse for [on|off|true|false]
+ * @param input the String to parse for [on|off|true|false]
* @param iaxOnError if true and input is bad, throw
* IllegalArgumentException
* @return true if input is true, false otherwise
public void testAjcLTWPerClauseTest_XnoWeave() {
runTest("AjcLTW PerClauseTest -XnoWeave");
}
+//FIXME AV - fails with ?? ataspectj\PerClauseTestAspects.java::0 the parameter jp is not bound in [all branches of] pointcut
//
-// public void testAjcLTWPerClauseTest_Xreweavable() {
-// runTest("AjcLTW PerClauseTest -Xreweavable");
-// }
-//
-// public void testJavaCAjcLTWPerClauseTest() {
-// runTest("JavaCAjcLTW PerClauseTest");
-// }
+ public void testAjcLTWPerClauseTest_Xreweavable() {
+ runTest("AjcLTW PerClauseTest -Xreweavable");
+ }
+
+ public void testJavaCAjcLTWPerClauseTest() {
+ runTest("JavaCAjcLTW PerClauseTest");
+ }
public void testAjcLTWAroundInlineMungerTest_XnoWeave() {
runTest("AjcLTW AroundInlineMungerTest -XnoWeave");
// // The ANT copy task should be used to copy resources across.
// private final static boolean CopyResourcesFromInpathDirectoriesToOutput=false;
- private Set alreadyConfirmedReweavableState;
-
+
/**
* Add any .class files in the directory to the outdir. Anything other than .class files in
* the directory (or its subdirectories) are considered resources and are also copied.
int numArgs = advice.getSignature().getParameterTypes().length;
if (numFormals > 0) {
names = advice.getSignature().getParameterNames(world);
+ System.out.println(advice.getSignature().toLongString());//AVB
validateBindings(newP,p,numArgs,names);
}
} else {
processReweavableStateIfPresent(className, classType);
}
- // register all aspect that have been extracted from reweavable state for LTW
- // note: when doing AJC, the missing aspect is already catch in the previous state thru Type.MISSING
- if (alreadyConfirmedReweavableState != null) {
- for (Iterator iterator = alreadyConfirmedReweavableState.iterator(); iterator.hasNext();) {
- String aspectClassName = (String) iterator.next();
- addLibraryAspect(aspectClassName);
- }
- // refresh all the stuff... perhaps too much here...
- if (!alreadyConfirmedReweavableState.isEmpty())
- prepareForWeave();
- }
-
requestor.addingTypeMungers();
// We process type mungers in two groups, first mungers that change the type
world.showMessage(IMessage.INFO,
WeaverMessages.format(WeaverMessages.REWEAVABLE_MODE),
null, null);
-
- //TODO AV - can't we avoid this creation (LTW = happens for each class load!)
- alreadyConfirmedReweavableState = new HashSet();
}
public void processReweavableStateIfPresent(String className, BcelObjectType classType) {
null,null);
Set aspectsPreviouslyInWorld = wsi.getAspectsAffectingType();
if (aspectsPreviouslyInWorld!=null) {
+ // keep track of them just to ensure unique missing aspect error reporting
+ Set alreadyConfirmedReweavableState = new HashSet();
for (Iterator iter = aspectsPreviouslyInWorld.iterator(); iter.hasNext();) {
String requiredTypeName = (String) iter.next();
if (!alreadyConfirmedReweavableState.contains(requiredTypeName)) {
onType.clearInterTypeMungers();
List decpToRepeat = new ArrayList();
- List decaToRepeat = new ArrayList();
-
+
boolean aParentChangeOccurred = false;
boolean anAnnotationChangeOccurred = false;
// First pass - apply all decp mungers