aboutsummaryrefslogtreecommitdiffstats
path: root/tests/src/test/resources/org/aspectj/systemtest/ajc1921/ajc1921.xml
blob: 6d454c423080f90464aee09958a35bcb40376bbe (plai
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
	<name>org.eclipse.jgit.junit.http</name>
	<comment></comment>
	<projects>
	</projects>
	<buildSpec>
		<buildCommand>
			<name>org.eclipse.jdt.core.javabuilder</name>
			<arguments>
			</arguments>
		</buildCommand>
		<buildCommand>
			<name>org.eclipse.pde.ManifestBuilder</name>
			<arguments>
			</arguments>
		</buildCommand>
		<buildCommand>
			<name>org.eclipse.pde.SchemaBuilder</name>
			<arguments>
			</arguments>
		</buildCommand>
		<buildCommand>
			<name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
			<arguments>
			</arguments>
		</buildCommand>
	</buildSpec>
	<natures>
		<nature>org.eclipse.pde.PluginNature</nature>
		<nature>org.eclipse.jdt.core.javanature</nature>
		<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
	</natures>
</projectDescription>
d='n205' href='#n205'>205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446
<!DOCTYPE suite SYSTEM "../tests/ajcTestSuite.dtd"[]>

<!--
	JDK 21 (https://openjdk.org/projects/jdk/21/):
		Language features:
			JEP 430: String Templates (Preview)
			JEP 440: Record Patterns
			JEP 441: Pattern Matching for switch
			JEP 443: Unnamed Patterns and Variables (Preview)
			JEP 445: Unnamed Classes and Instance Main Methods (Preview)
		API or JVM only:
			JEP 431: Sequenced Collections
			JEP 439: Generational ZGC
			JEP 442: Foreign Function & Memory API (Third Preview)
			JEP 444: Virtual Threads
			JEP 446: Scoped Values (Preview)
			JEP 448: Vector API (Sixth Incubator)
			JEP 449: Deprecate the Windows 32-bit x86 Port for Removal
			JEP 451: Prepare to Disallow the Dynamic Loading of Agents
			JEP 452: Key Encapsulation Mechanism API
			JEP 453: Structured Concurrency (Preview)
-->
<suite>

	<!-- Java 21 final, Java 17, 18, 19, 20 preview -->
	<ajc-test dir="features1921/java21" vm="21" title="switch pattern matching preview 4 java">
		<compile files="SwitchPatternPreview4OK.java" options="-21" />
		<run class="SwitchPatternPreview4OK" vmargs="">
			<message/>
			<stdout>
				<line text="null" />
				<line text="int 123" />
				<line text="long 999" />
				<line text="double 12.340000" />
				<line text="String foo" />
				<line text="[123, foo, 999, 12.34]" />
				<line text="Non-circle" />
				<line text="Small circle" />
				<line text="Large circle" />
				<line text="Sealed sub-class A" />
				<line text="Sealed sub-class B" />
				<line text="Sealed sub-record C" />
				<line text="absolute value 1: -1" />
				<line text="other integer: 0" />
				<line text="positive integer: 42" />
				<line text="other integer: -99" />
				<line text="positive integer: 123" />
				<line text="value unavailable: null" />
				<line text="42" />
			</stdout>
		</run>
	</ajc-test>

	<!-- Java 21 final, Java 17, 18, 19, 20 preview -->
	<ajc-test dir="features1920/java20" vm="21" title="switch pattern matching preview 4 error">
		<compile files="SwitchPatternPreview4Error.java" options="-21">
			<message kind="error" file="SwitchPatternPreview4Error.java" text="This case label is dominated by one of the preceding case labels"/>
		</compile>
	</ajc-test>

	<!-- Java 21 final, Java 17, 18, 19, 20 preview -->
	<ajc-test dir="features1921/java21" vm="21" title="switch pattern matching preview 3 aspect">
		<compile files="SwitchPatternPreview3Aspect.aj" options="-21" />
		<run class="Application" vmargs="">
			<stdout>
				<line text="null" />
				<line text="int 123" />
				<line text="long 999" />
				<line text="double 12.340000" />
				<line text="String foo" />
				<line text="[123, foo, 999, 12.34]" />
				<line text="Non-circle" />
				<line text="Small circle" />
				<line text="Large circle" />
				<line text="Sealed sub-class A" />
				<line text="Sealed sub-class B" />
				<line text="Sealed sub-record C" />
				<line text="absolute value 1: -1" />
				<line text="other integer: 0" />
				<line text="positive integer: 42" />
				<line text="other integer: -99" />
				<line text="positive integer: 123" />
				<line text="value unavailable: null" />
			</stdout>
		</run>
	</ajc-test>

	<!-- Java 21 final, Java 17, 18, 19, 20 preview -->
	<ajc-test dir="features198/java17" vm="21" title="switch pattern matching error">
		<compile files="SwitchPatternError.java" options="-21">
			<message kind="error" file="SwitchPatternError.java" text="This case label is dominated by one of the preceding case labels"/>
		</compile>
	</ajc-test>

	<!-- Java 21 final, Java 17, 18, 19, 20 preview -->
	<ajc-test dir="features1919/java19" vm="21" title="switch pattern matching preview 3 error 1">
		<compile files="SwitchPatternPreview3Error1.java" options="-21">
			<!-- No more error message as of Java 21 -->
			<!--<message kind="error" file="SwitchPatternPreview3Error1.java" text="This case label is dominated by one of the preceding case labels"/>-->
		</compile>
	</ajc-test>

	<!-- Java 21 final, Java 17, 18, 19, 20 preview -->
	<ajc-test dir="features1919/java19" vm="21" title="switch pattern matching preview 3 error 2">
		<compile files="SwitchPatternPreview3Error2.java" options="-21">
			<message kind="error" file="SwitchPatternPreview3Error2.java" text="This case label is dominated by one of the preceding case labels"/>
		</compile>
	</ajc-test>

	<!-- Java 21 final, Java 19, 20 preview -->
	<ajc-test dir="features1919/java19" vm="21" title="record patterns">
		<compile files="RecordPatternsPreview1OK.java" options="-21"/>
	</ajc-test>

	<!-- Java 21 final, Java 19, 20 preview -->
	<ajc-test dir="features1919/java19" vm="21" title="record patterns error">
		<compile files="RecordPatternsPreview1Error.java" options="-21">
			<!-- https://github.com/eclipse-jdt/eclipse.jdt.core/issues/450 (fixed for preview 2 in Eclipse 2023-03, 4.27) -->
			<!--
			<message kind="error" file="RecordPatternsPreview1Error.java" text="Raw types are not allowed in record patterns"/>
			<message kind="error" file="RecordPatternsPreview1Error.java" text="Raw types are not allowed in record patterns"/>
			-->
		</compile>
		<run class="RecordPatternsPreview1Error" vmargs="">
			<stdout>
				<line text="I'm a box"/>
				<line text="I'm a box"/>
			</stdout>
		</run>
	</ajc-test>

	<!-- Java 21 final, Java 19, 20 preview -->
	<ajc-test dir="features1921/java21" vm="21" title="record patterns exhaustiveness 1">
		<compile files="RecordPatternsPreview1ExhaustivenessOK1.java" options="-21"/>
		<run class="RecordPatternsPreview1ExhaustivenessOK1" vmargs="">
			<stdout>
				<line text="y"/>
				<line text="a"/>
			</stdout>
		</run>
	</ajc-test>

	<!-- Java 21 final, Java 19, 20 preview -->
	<ajc-test dir="features1921/java21" vm="21" title="record patterns exhaustiveness aspect">
		<compile files="RecordPatternsPreview1ExhaustivenessAspect.aj" options="-21"/>
		<run class="RecordPatternsPreview1ExhaustivenessAspect" vmargs="">
			<stdout>
				<line text="y"/>
				<line text="a"/>
				<line text="Pair[x=C@000, y=D@000]"/>
			</stdout>
		</run>
	</ajc-test>

	<!-- Java 21 final, Java 19, 20 preview -->
	<ajc-test dir="features1919/java19" vm="21" title="record patterns aspect">
		<compile files="RecordPatternsPreview1Aspect.aj" options="-21"/>
		<run class="RecordPatternsPreview1Aspect" vmargs="">
			<stdout>
				<line text="9"/>
				<line text="14"/>
				<line text="Doing something with Point[x=2, y=7]"/>
				<line text="Upper-left color: RED"/>
				<line text="Upper-left color: RED"/>
				<line text="Upper-left x coordinate: 1"/>
				<line text="Doing something with Rectangle[upperLeft=ColoredPoint[p=Point[x=1, y=6], c=RED], lowerRight=ColoredPoint[p=Point[x=4, y=6], c=BLUE]]"/>
			</stdout>
		</run>
	</ajc-test>

	<!-- Java 21 final, Java 19, 20 preview -->
	<ajc-test dir="features1919/java19" vm="21" title="record patterns exhaustiveness error">
		<compile files="RecordPatternsPreview1ExhaustivenessError.java" options="-21">
			<message kind="error" file="RecordPatternsPreview1ExhaustivenessError.java" text="An enhanced switch statement should be exhaustive; a default label expected"/>
		</compile>
	</ajc-test>

	<!-- Java 21 final, Java 19, 20 preview -->
	<ajc-test dir="features1919/java19" vm="21" title="record patterns exhaustiveness 2">
		<compile files="RecordPatternsPreview1ExhaustivenessOK2.java" options="-21"/>
		<run class="RecordPatternsPreview1ExhaustivenessOK2" vmargs="">
			<stdout>
				<line text="Bob 12"/>
			</stdout>
		</run>
	</ajc-test>

	<!-- Java 21 preview -->
	<ajc-test dir="features1921/java21" vm="21" title="string patterns">
		<compile files="StringPatternsPreview1.java" options="--enable-preview -21"/>
		<run class="StringPatternsPreview1" vmargs="--enable-preview">
			<stdout ordered="yes">
				<line text="Bill Duck"/>
				<line text="10 + 20 = 30"/>
				<line text="You have a special New Year's sale discount waiting for you!"/>
				<line text="Access at 2011-11-11 11:11:11 from localhost/127.0.0.1"/>
				<line text="The file _dummy.dat does not exist"/>
				<line text="The time is 11:11:11 or roughly eleven after eleven"/>
				<line text="apples, oranges, peaches"/>
				<line text=""/>
				<line text="&lt;html&gt;"/>
				<line text="  &lt;head&gt;"/>
				<line text="    &lt;title&gt;My Web Page&lt;/title&gt;"/>
				<line text="  &lt;/head&gt;"/>
				<line text="  &lt;body&gt;"/>
				<line text="    &lt;p&gt;Hello, world&lt;/p&gt;"/>
				<line text="  &lt;/body&gt;"/>
				<line text="&lt;/html&gt;"/>
				<line text=""/>
				<line text="Description     Width    Height     Area"/>
				<line text="Alfa            17.80    31.40      558.92"/>
				<line text="Bravo            9.60    12.40      119.04"/>
				<line text="Charlie          7.10    11.23       79.73"/>
				<line text="                             Total  757.69"/>
				<line text=""/>
				<line text="My name is Joan"/>
			</stdout>
		</run>
	</ajc-test>

	<!-- Java 21 preview -->
	<ajc-test dir="features1921/java21" vm="21" title="string patterns aspect">
		<compile files="StringPatternsPreview1Aspect.aj" options="--enable-preview -21"/>
		<run class="StringPatternsPreview1Aspect" vmargs="--enable-preview">
			<stdout ordered="yes">
				<line text="execution(void StringPatternsPreview1Aspect.main(String[]))"/>
				<line text="Bill Duck"/>
				<line text="10 + 20 = 30"/>
				<line text="You have a special New Year's sale discount waiting for you!"/>
				<line text="Access at 2011-11-11 11:11:11 from localhost/127.0.0.1"/>
				<line text="The file _dummy.dat does not exist"/>
				<line text="The time is 11:11:11 or roughly eleven after eleven"/>
				<line text="apples, oranges, peaches"/>
				<line text=""/>
				<line text="&lt;html&gt;"/>
				<line text="  &lt;head&gt;"/>
				<line text="    &lt;title&gt;My Web Page&lt;/title&gt;"/>
				<line text="  &lt;/head&gt;"/>
				<line text="  &lt;body&gt;"/>
				<line text="    &lt;p&gt;Hello, world&lt;/p&gt;"/>
				<line text="  &lt;/body&gt;"/>
				<line text="&lt;/html&gt;"/>
				<line text=""/>
				<line text="Description     Width    Height     Area"/>
				<line text="Alfa            17.80    31.40      558.92"/>
				<line text="Bravo            9.60    12.40      119.04"/>
				<line text="Charlie          7.10    11.23       79.73"/>
				<line text="                             Total  757.69"/>
				<line text=""/>
				<line text="My name is Joan"/>
			</stdout>
		</run>
	</ajc-test>

	<!-- Java 21 preview -->
	<ajc-test dir="features1921/java21" vm="21" title="unnamed patterns">
		<compile files="UnnamedPatternsPreview1.java" options="--enable-preview -21"/>
		<run class="UnnamedPatternsPreview1" vmargs="--enable-preview">
			<stdout ordered="yes">
				<line text="2"/>
				<line text="side effect"/>
				<line text="0"/>
				<line text="1"/>
				<line text="java.awt.Point[x=1,y=2]"/>
				<line text="java.awt.Point[x=4,y=5]"/>
				<line text="java.awt.Point[x=1,y=0]"/>
				<line text="java.awt.Point[x=4,y=0]"/>
				<line text="Bad number: 123xy"/>
				<line text="Doing something within scoped context"/>
				<line text="Closing scoped context"/>
				<line text="{ONE=NODATA, TWO=NODATA, THREE=NODATA}"/>
			</stdout>
		</run>
	</ajc-test>

	<!-- Java 21 preview -->
	<ajc-test dir="features1921/java21" vm="21" title="unnamed patterns aspect">
		<compile files="UnnamedPatternsPreview1Aspect.aj" options="--enable-preview -21"/>
		<run class="UnnamedPatternsPreview1Aspect" vmargs="--enable-preview">
			<stdout ordered="yes">
				<line text="execution(void UnnamedPatternsPreview1Aspect.main(String[]))"/>
				<line text="2"/>
				<line text="side effect"/>
				<line text="0"/>
				<line text="1"/>
				<line text="java.awt.Point[x=1,y=2]"/>
				<line text="java.awt.Point[x=4,y=5]"/>
				<line text="java.awt.Point[x=1,y=0]"/>
				<line text="java.awt.Point[x=4,y=0]"/>
				<line text="Bad number: 123xy"/>
				<line text="Doing something within scoped context"/>
				<line text="Closing scoped context"/>
				<line text="{ONE=NODATA, TWO=NODATA, THREE=NODATA}"/>
			</stdout>
		</run>
	</ajc-test>

	<!-- Java 21 preview -->
	<ajc-test dir="new" vm="21" title="underscore can still be used in pointcut patterns on Java 21+ - 1">
		<compile files="NotCharInPointcut.java" options="--enable-preview -21">
			<message kind="warning" line="51" text="advice defined in A has not been applied [Xlint:adviceDidNotMatch]"/>
			<message kind="warning" line="52" text="advice defined in A has not been applied [Xlint:adviceDidNotMatch]"/>
			<message kind="warning" line="53" text="advice defined in A has not been applied [Xlint:adviceDidNotMatch]"/>
		</compile>
		<run class="NotCharInPointcut" vmargs="--enable-preview"/>
	</ajc-test>

	<!-- Java 21 preview -->
	<ajc-test dir="features1921/java21" vm="21" title="underscore can still be used in pointcut patterns on Java 21+ - 2">
		<compile files="UnderscoreInPointcutAspect.aj" options="--enable-preview -21"/>
		<run class="UnderscoreInPointcutAspect" vmargs="--enable-preview">
			<stdout>
				<line text="[starts with underscore] execution(int UnderTest._add(int, int)) -> 12, 4"/>
				<line text="[contains underscore] execution(int UnderTest._add(int, int)) -> 12, 4"/>
				<line text="16"/>
				<line text="[starts with underscore] execution(int UnderTest._subtract(int, int)) -> 12, 4"/>
				<line text="[contains underscore] execution(int UnderTest._subtract(int, int)) -> 12, 4"/>
				<line text="8"/>
				<line text="[ends with underscore] execution(int UnderTest.multiply_(int, int)) -> 12, 4"/>
				<line text="[contains underscore] execution(int UnderTest.multiply_(int, int)) -> 12, 4"/>
				<line text="48"/>
				<line text="[ends with underscore] execution(int UnderTest.divide_(int, int)) -> 12, 4"/>
				<line text="[contains underscore] execution(int UnderTest.divide_(int, int)) -> 12, 4"/>
				<line text="3"/>
				<line text="[contains underscore] execution(int UnderTest.power_of(int, int)) -> 3, 3"/>
				<line text="27"/>
				<line text="[no underscore] execution(int UnderTest.squareRoot(int)) -> 49"/>
				<line text="7"/>
			</stdout>
		</run>
	</ajc-test>

	<!-- Java 21 preview -->
	<ajc-test dir="features1921/java21" vm="21" title="named class with simple main method">
		<!-- Compiles without preview mode, but needs preview mode to run -->
		<compile files="NamedClassWithSimpleMainMethodPreview1.java" options="-21"/>
		<run class="NamedClassWithSimpleMainMethodPreview1" vmargs="--enable-preview">
			<stdout>
				<line text="Hello world!"/>
			</stdout>
		</run>
	</ajc-test>

	<!-- Java 21 preview -->
	<ajc-test dir="features1921/java21" vm="21" title="named aspect with simple main method">
		<!-- Compiles without preview mode, but needs preview mode to run -->
		<compile files="NamedAspectWithSimpleMainMethodPreview1.aj" options="-21"/>
		<run class="NamedAspectWithSimpleMainMethodPreview1" vmargs="--enable-preview">
			<stdout>
				<line text="Hello world!"/>
			</stdout>
		</run>
	</ajc-test>

	<!-- Java 21 preview -->
	<ajc-test dir="features1921/java21" vm="21" title="unnamed class with simple main method">
		<compile files="UnnamedClassWithSimpleMainMethodPreview1.java" options="--enable-preview -21"/>
		<run class="UnnamedClassWithSimpleMainMethodPreview1" vmargs="--enable-preview">
			<stdout>
				<line text="Hello world!"/>
			</stdout>
		</run>
	</ajc-test>

	<!-- https://github.com/eclipse-aspectj/aspectj/issues/279, AspectJ 1.9.21.1 -->
	<ajc-test dir="bugs1921/github_279" vm="8" title="same class woven concurrently in parallel-capable classloader">
		<compile files="Application.java Greeter.java GreeterImpl.java ParallelCapableClassLoader.java" options="-8"/>
		<compile files="HelloInterceptor.java" options="-8 -Xlint:ignore"/>
		<!-- Problem only reproduces in forked JVM with java agent, hence Ant build -->
		<ant file="ant.xml" target="same class woven concurrently in parallel-capable classloader" verbose="true"/>
	</ajc-test>

	<!--
		https://github.com/eclipse-aspectj/aspectj/issues/285, AspectJ 1.9.21.2

		See also org.aspectj.systemtest.ajc171.NewFeatures::testSharedCache. This is a quasi negative test missing back in
		1.7.2 when the shared cache was introduced.
	-->
	<ajc-test dir="bugs1921/github_285" title="shared cache negative test">
		<compile files="Unwoven.java" options="-1.5"/>
		<run class="Unwoven" ltw="aop.xml" usefullltw="true"
			vmargs="-Daj.weaving.cache.enabled=true -Daj.weaving.cache.dir=./ -Daj.weaving.cache.impl=shared">
			<stdout>
				<line text="Hello world"/>
			</stdout>
			<!--
				Nothing should be printed on stderr, especially no fatal NPE with message
				'Cannot read the array length because "b" is null' and subsequent ajcore.*.txt
			-->
			<stderr/>
		</run>
	</ajc-test>

	<!--
		https://github.com/eclipse-aspectj/aspectj/issues/288,
		https://github.com/eclipse-aspectj/aspectj/issues/141, AspectJ 1.9.21.2
	-->
	<ajc-test dir="bugs1921/github_288" title="memory leak for @AspectJ nested, non-inlined around-advice - AssertionError">
		<compile files="NestedAroundClosureMemoryLeakTest.java MemoryHog.java FirstAspect.aj SecondAspect.aj" options="-1.8 -XnoInline"/>
		<run class="NestedAroundClosureMemoryLeakTest" vmargs="-ea --add-opens java.base/java.lang=ALL-UNNAMED">
			<stdout>
				<line text="FirstAspect"/>
				<line text="SecondAspect"/>
				<line text="Executing task"/>
				<line text="Finished executing tasks"/>
				<line text="Finished executing GC"/>
				<line text="Test passed - all inheritable thread-locals are null after GC"/>
			</stdout>
			<!-- No AssertionError on stderr-->
			<stderr/>
		</run>
	</ajc-test>

	<!--
		https://github.com/eclipse-aspectj/aspectj/issues/288,
		https://github.com/eclipse-aspectj/aspectj/issues/141, AspectJ 1.9.21.2
	-->
	<ajc-test dir="bugs1921/github_288" title="memory leak for @AspectJ nested, non-inlined around-advice - OutOfMemoryError">
		<compile files="NestedAroundClosureMemoryLeakTest.java MemoryHog.java FirstAspect.aj SecondAspect.aj" options="-1.8 -XnoInline"/>
		<run class="NestedAroundClosureMemoryLeakTest" vmargs="-ea --add-opens java.base/java.lang=ALL-UNNAMED -Xmx512M" options="oom">
			<stdout>
				<line text="FirstAspect"/>
				<line text="SecondAspect"/>
				<line text="Executing task"/>
				<line text="FirstAspect"/>
				<line text="SecondAspect"/>
				<line text="Executing task"/>
				<line text="FirstAspect"/>
				<line text="SecondAspect"/>
				<line text="Executing task"/>
				<line text="FirstAspect"/>
				<line text="SecondAspect"/>
				<line text="Executing task"/>
				<line text="FirstAspect"/>
				<line text="SecondAspect"/>
				<line text="Executing task"/>
				<line text="Finished executing tasks"/>
				<line text="Finished executing GC"/>
				<line text="Test passed - no OutOfMemoryError due to inheritable thread-locals memory leak"/>
			</stdout>
			<!-- No fatal OutOfMemoryError on stderr -->
			<stderr/>
		</run>
	</ajc-test>

</suite>