[Feature 738013] Added JML specifications. Refactoring and simplification in convertType and numberValue to make class more amenable to subclassing.
Added pure function isValidNumericTypeID() to be used in CNumericType
Added public invariant concerning expected relative ordering of TID_* values for numeric types. (This is in support of the informal comment that was already in the file.)
[Feature 738013] Minor updates to JML specs.
Making use of widening_primitive_conv_from in the definition of implicitlyCastTo (thus allowing the proper processing of \bigint).
[Feature 738013] Update to fail() comment.
[Feature 738013] Add method widening_primitive_conv_from(). Adapted isAlwaysAssignableTo() to make use of the new method. Change required to facilitate overriding isAlwaysAssignableTo() in subclasses.
[Feature 738013] Added accessors to token streams (like those in TokenStreamSelector).
Added ability to visit MJWarnExpression AST nodes (needed e.g. for jmldoc).
[Feature 738013]
Mainly adding support for "safe" arithmetic to JAddExpression's.
[Feature 738013] These changes are necessary to will allow the JML checker to know if certain arithmetic operators occur in the context of an annotation or not.
Made mjWarnExpression an alternative of mjPrimaryExpression rather than jPrimaryExpression so that the alternative production is also automatically available in subgrammars.
Preliminary support for safe integral arithmetic. The feature can be enabled via the --safemath option. With this commit, --safemath will report a compile-time error if the evaluation of a constant expression, involving unary minus, causes an overflow. Support for other operators to be added shortly. Temporarily added _warn, _nowarn, _warn_op and _nowarn_op to the grammar.
Changed assertion in constructor to permit JRealLiteral's to be of type \real.
Changes in preparation of activation of implicit promotion to \bigint.
972881, "Minimum integral constants rejected as invalid"
972881, Minimum integral constants rejected as invalid (iteration 2).
972881, Minimum integral constants rejected as invalid (iteration 2). Added isImageOnly()
Added modules names MJ and web so that older systems, e.g. Eclipse 2.x's CVS can see the modules. Removed module named experiment.
Added nullity modifiers. In most cases, the change consists of adding
Added nullable modifier to overriddenMethods().
Removed erroneous spec of setIsNonNull().
This commit is part of the non-null-by-default feature cleanup
Upates to class specifications; mostly added non-null constraints.
org/multijava/mjc/JMethodDeclaration.java:
Added bin4eclipse.
Added nullity annotations to match those given in corresponding .jml file.
Fixed problem with parsing of nullity modifiers in casts. There were two problems:
(removing temporary code committed by mistake)
Cleanup: making use of org.multijava.util.compiler.TokenReference.NO_REF when bogus AST nodes are created rather than null. The following files are affected in org/multijava/mjc: CCORInitializer.java, CSourceClass.java, CSourceDispatcherClass.java, CType.java, CompilerPassEnterable.java, JBlock.java, JCompilationUnit.java, JMethodCallExpression.java, JSynchronizedStatement.java, JThisExpression.java, JTryFinallyStatement.java.
(minor change: fix echo of TOOLVERSION)
Up until recently (v1.17), the 'samples' subdir was only a member of TESTDIRS, not SUBDIRS (which makes sense because SUBDIRS as part of the 'build' target, which is the same target used to build mjc ... and yet, 'samples' is built using mjc). Hence I am changing this back to the way the were (i.e. removing 'samples' from SUBDIRS.
To avoid compiler warnings, added casts to Object to non-Object arguments of varargs methods.
(Reinstating the .project file to be under CVS.)
Phylum location cannot be null. Added runtime test. (I have had this test in my local repository since Dec 2006 and an MJ or JML2 test has yet to fail due to it.)
Eclipse settings (a first cut): builds all of MJ, except for mjdoc, with no errors or warnings reported. To ensure that we all get the same warnings/errors reported I have included in this commit project specific compiler settings (note that I have turned many of the compiler settings from "warning" to "ignore" -- e.g. unused imports).
This commit is part of the non-null-by-default feature cleanup (bug #1379850) -- see the bug report for details.
Changed comments only. Changed disabled JML annotations so that they start with, e.g., //x@ rather than //<space>@.
(Trimmed dead code ... since JML4 was reporting nullity errors.)
Adding nullity modifiers.
Adding nullity modifiers (esp. that the File argument of the TokenReference is nullable).
Corrected nullity annotations to match corresponding .jml file (which, hopefully, are correct :).
(Rolling out last change -- compiles fine under Java 5 (Eclipse) but apparently not under 1.4.)
Addition of nullity modifiers.
I don't think that listTestsWithOutput should have been committed, but they are ... and possibly with the wrong permissions. This commit fixes the permissions by doing: chmod ug+w listTestsWithOutput.
Removed unnecessary imports (which created unnecessary dependencies; which in turn causes problems under Eclipse).
Removing org/multijava/mjc/testcase/java5/generics/listTestsWithOutput since it is in .cvsignore and it is an autogenerated file (which was probably committed by mistake).
Added `grammatical' support for "bigint" and "real": they now are recognized
* Package name corrected: getopt not getopts.
Added pure function isValidNumericTypeID() -- overridden from CNumericType --
To solve:
Intermediate development gliches in implementing support for \bigint. This test failed. Temporary fix is to remove binary expressions with literal constants.
Literal constants in unary expressions are no longer implicitly promoted to \bigint.
[Feature 738013] Reverting to use of JOrdinalLiteral (rather than JmlOrdinalLiteral).
Added public invariant concerning expected relative ordering of TID_* values for numeric types.
[Feature 738013] Rewrite of tests so that, in general, there is one method declaration per aspect of the feature that we wish to test. \bigint is now appropriately supported in expressions involving literals, unary and binary operators as well as casts (all of this without implicit promotion).
[Feature 738013] Added parser method isInAnnotation() and inner class IsInAnnotationHelper. This will enable us to know whether arithmetic operators should be subject to implicit promotion.
[Feature 738013] JmlBinaryArithmeticExpressionHelper.typecheck to be used in binary expression AST node classes to help implement promotion to \bigint or \real.
[Feature 738013] Added JmlBinaryArithmeticExpressionHelper.
[Feature 738013] Making use of JmlBinaryArithmeticExpressionHelper.typecheck. Some optimization: e.g. cast is only made if type is not already \bigint or \real.
[Feature 738013]
[Feature 738013] Disabling implicit promotion for bit and shift operators.
[Feature 738013] Addition of constantFolding method override (since we do not want constant folding over \bigint or \real literals).
[Feature 738013] Minor updates to JML specs.
[Feature 738013] Minor changes to test cases so that they are valid whether implicit promotion in enabled or not.
[Feature 738013] Changes that enable the JML checker to create different expression AST nodes depending on the context (Java vs. annotation). This capability has been implemented for the following operators: unary +, -, binary +, -, *, /, %. In general J*Expression AST nodes are created for Java contexts and Jml*Expression AST nodes for annotation contexts (e.g. JAddExpression vs. JmlAddExpression).
[Feature 738013] Update to test case so that it will pass with the checker's -a option.
[Feature 738013] Updated tests.
[Feature 738013] Additional tests (adjustment of expected output).
[Feature 738013] Additional tests.
[Feature 738013] Re-enabling constant folding. This commit covers unary operators.
Now testing for inSpecScope() once in the constructor rather than in integralArithmeticOverflowChecking() so that \nowarn will function properly.
Added support for safe arithmetic for addition (and adjustments for unary minus).
Updates to selected model specs to remove inconsistencies and to start making use of \nowarn notation - getting ready for implicit promotion. Removed JMLByte(int) and JMLShort(int) constructors. Removed ^M's from Primitive_bigint_basic.java and added a few extra tests.
Implicit promotion of operands of unary -, binary +, -, * and / will no longer be influenced by the presence of cast operators. Instead, to achieve the effect of Java operators use \nowarn, \nowarn_op.
Testing if constant folding is handled properly for binary addition. Also added tests involving \warn, \nowarn, etc.
Updates to selected model specs to remove inconsistencies and to start making use of \nowarn notation - getting ready for implicit promotion. Removed JMLByte(int) and JMLShort(int) constructors. Removed ^M's from Primitive_bigint_basic.java and added a few extra tests.
Added ability to visit MJWarnExpression AST nodes (needed, e.g., for jmldoc).
[Feature 738013] Getting ready for activation of implicit promotion. Use made of \nowarn().
Removed JMLChar(int) (as was done for JMLByte and JMLShort).
Adding TestClassClauses.java since constant folding is occurring when it should not (Bug item #752562).
Removed createModuloExpression since % is not subject to implicit promotion and it does not overflow.
Updated expected output so that it demonstrates that constant folding does not occur in JML specification expressions.
Temporarily disabling implicit promotion to \real (regardless of the setting of the -i flag).
Modifications to model files that will be necessary once implicit promotion to \bigint is enabled. Preliminary work on the RAC to support \bigint.
Changes in preparation of activation of implicit promotion to \bigint.
[Feature 738013] Enabling of implicit promotion to \bigint, thus fulfilling half of Feature 738013. (I may close the feature and open another \real.)
[Feature 738013] Changes in preparation of activation of implicit promotion to \bigint. (Changes to the samples that are described in TR 2003-001 have been made in accordance to the TR.)
Changes in preparation of activation of implicit promotion to \bigint.
Defined JML_DEV_BASE and JML_PKG_PREFIX; these default to HOME and /usr/local, respectively. Use of these variables in the definitions makes it easier to setup MJ and JML builds in non-default places.
Defined JML_DEV_BASE and JML_PKG_PREFIX; these default to HOME and /usr/local, respectively. Use of these variables in the definitions makes it easier to setup MJ and JML builds in non-default places.
972881, Minimum integral constants rejected as invalid (iteration 2).
TEMP will now be user specific (hence avoiding permission problems when multiple users are working from the same machine).
Added modules names JML2 and web so that older systems, e.g. Eclipse 2.x's CVS can see the modules.
*** empty log message ***
Boolean.jml contained a few inconsistent method specifications. E.g.
Adding non-null annotations as appropriate.
Updated specs.
texi2html.real is obsolete; now using texi2html.pl instead. Also change absolute path to make use of appropriate environment variable.