From 21f9d5a71fa19792e0268a97955efdb8bf5d7916 Mon Sep 17 00:00:00 2001
From: wisberg
This document is intended to completely describe the 1.1 language and tools in relation to AspectJ 1.0.6. +For the most up-to-date information about known issues in AspectJ 1.1, +see the bug database at + http://dev.eclipse.org/bugs, +especially the open bugs for the + + compiler, + + IDE support, + + documentation, and + + Ant tasks. +
The information in this document has been folded into the semantics @@ -74,7 +87,8 @@ are now part of a single downloadable distribution from Emacs, NetBeans and JBuilder are now -individual SourceForge projects.
+individual SourceForge projects, and their 1.1 releases may trail +the main AspectJ release.There are a couple of language limitations for things that are rarely used that make the - implementation simpler. If no one speaks up in defense of these, - they will probably become official simplifications of the language. - If defenders speak up, then they will be listed as limitations of - the current compiler implementation.
+ implementation simpler, so we have restricted the language accordingly. +void
return type. This will require
porting of code that uses the set
PCD in conjunction
- with after-returning or around advice...
wildcard in args PCDs (rarely encountered in the
+ wild) because we didn't have the time. This might be available
+ in later releases if there is significant outcry.Finally, we did not implement the handling of multiple
- Finally,
+ we did not implement the new
pertype aspect specifier. It has been taken off the table for
- 1.1rc, though it may well be in a future release...
wildcards in args PCDs (rarely encountered in the
- wild) because we didn't have the time. It should be available in
- 1.1rc1. Also, we did not implement the new
+
Some other features we plan to support for 1.1, but did not make - it into this beta release:
+Some other features we wanted to support for 1.1, but did not make + it into this release:
But some features of the 1.0 compiler are not supported in the 1.1 compiler:
A short description of the options ajc accepts is available with
- "ajc -help
".
ajc -help
".
+ Longer descriptions are available in the Development Environment Guide
+ section on ajc.
@@ -294,8 +311,8 @@ individual SourceForge projects.
This release does not include ajdoc
, the
- documentation tool for AspectJ sources, and its 1.1 release looks
- doubtful. Ajdoc is deeply dependent on the
+ documentation tool for AspectJ sources.
+ Ajdoc is deeply dependent on the
abstract syntax tree classes from the old compiler, so it needs a
bottom-up rewrite. We think it best to use this opportunity to
implement more general API's for publishing and rendering static
@@ -337,10 +354,10 @@ individual SourceForge projects.
Of note for the beta is that NetBeans 3.4 is supported, and there is now +
Of note is that NetBeans 3.4 is supported, and there is now better integration for the compiler messages output window.
@@ -940,19 +957,14 @@ individual SourceForge projects.The AspectJ 1.1 compiler now supports incremental compilation. - For the final release, this will work from the various IDE plugins we - ship, but for the beta release, it is only supported on the - command-line compiler. -
- -When ajc is called with the -incremental option, it must also be + When ajc is called with the -incremental option, it must also be passed a -sourceroots option specifying a directory to incrementally compile. Once the initial compile is done, ajc waits for console input. Every time it reads a new line (i.e., every time the user hits return) ajc recompiles those input files that need recompiling.
-This new functionality is still only lightly tested.
@@ -1127,19 +1139,15 @@ individual SourceForge projects.-XOcodeSize
is no longer necessary. We will be
- supporting its inverse,
- -XnoInline
in the final.
+ -XnoInline
.
Building on the eclipse compiler has given us access to a very sophisticated problem reporting system as well as highly optimized @@ -1164,28 +1171,17 @@ individual SourceForge projects.
bugs. -Advice that has an explicit throws clause needs to have that - throws clause checked during weaving for each join point that is - matched. This checking is not implemented in 1.1beta5 which can - lead to checked exceptions being thrown from places they are not - allowed by the Java language.
+before() throws IOException : execution (void m()) { - InputStream s = new FileInputStream("m.out"); - ... - } - ... - public void m() { ... } -+
For compiler errors and warnings detected during bytecode weaving, + source code context will not be displayed. In particular, for declare + error and declare warning statements, the compiler now only emits the + file and line. We are investigating ways to overcome this in cases + where the source code is available; in cases where source code is + not available, we might specify the signature of the offending code. + For more information, see bug 31724.
-This code should result in a link-time weaving error that the - throws clause in the advice is incompatible with the checked - exceptions which can be legally thrown from the matched join - point. In beta5 this will just silently weave in the advice and - it will be possible for an IOException to be thrown from m().
org/aspectj/weaver/XlintDefault.properties
for the
default behavior and a template to copy.
- Though more -Xlint
warnings are supported in
- 1.1beta5 than previously, we expect even more to be supported in
- 1.1final. Because the configurability allows users to turn off
- warnings, we will also be able to warn about more potentially
+
More -Xlint
warnings are supported now, and
+ we may add disabled warnings in subsequent bug-fix releases of 1.1.
+ Because the configurability allows users to turn off
+ warnings, we will be able to warn about more potentially
dangerous situations, such as the potentially unsafe casts used by
very polymorphic uses of proceed in around advice.
Because AspectJ 1.1beta5 does not generate source code after - weaving, the source-code-specific options -source, -usejavac, +
Because AspectJ 1.1 does not generate source code after + weaving, the source-code-specific options -preprocess, -usejavac, -nocomment and -workingdir options are meaningless and so not supported.
@@ -1360,9 +1356,7 @@ individual SourceForge projects.So, because it's easier to implement, and because we believe that this is the last possibility to make the semantics more useful, we - have made set join points have a void return type in 1.1beta5. - Please complain vociferously if you believe this is wrong, and we - can revert for the final version.
+ have made set join points have a void return type in 1.1.