diff --git a/Tests/ErrorJavaTokenNotJoos.joos b/Tests/A1tests/ErrorJavaTokenNotJoos.joos similarity index 100% rename from Tests/ErrorJavaTokenNotJoos.joos rename to Tests/A1tests/ErrorJavaTokenNotJoos.joos diff --git a/Tests/J1_01.java b/Tests/A1tests/J1_01.java similarity index 100% rename from Tests/J1_01.java rename to Tests/A1tests/J1_01.java diff --git a/Tests/J1_1_AmbiguousName_AccessResultFromMethod.java b/Tests/A1tests/J1_1_AmbiguousName_AccessResultFromMethod.java similarity index 100% rename from Tests/J1_1_AmbiguousName_AccessResultFromMethod.java rename to Tests/A1tests/J1_1_AmbiguousName_AccessResultFromMethod.java diff --git a/Tests/J1_1_Cast_Complement.java b/Tests/A1tests/J1_1_Cast_Complement.java similarity index 100% rename from Tests/J1_1_Cast_Complement.java rename to Tests/A1tests/J1_1_Cast_Complement.java diff --git a/Tests/J1_1_Cast_MultipleCastOfSameValue_1.java b/Tests/A1tests/J1_1_Cast_MultipleCastOfSameValue_1.java similarity index 100% rename from Tests/J1_1_Cast_MultipleCastOfSameValue_1.java rename to Tests/A1tests/J1_1_Cast_MultipleCastOfSameValue_1.java diff --git a/Tests/J1_1_Cast_MultipleCastOfSameValue_2.java b/Tests/A1tests/J1_1_Cast_MultipleCastOfSameValue_2.java similarity index 100% rename from Tests/J1_1_Cast_MultipleCastOfSameValue_2.java rename to Tests/A1tests/J1_1_Cast_MultipleCastOfSameValue_2.java diff --git a/Tests/J1_1_Cast_MultipleCastOfSameValue_3.java b/Tests/A1tests/J1_1_Cast_MultipleCastOfSameValue_3.java similarity index 100% rename from Tests/J1_1_Cast_MultipleCastOfSameValue_3.java rename to Tests/A1tests/J1_1_Cast_MultipleCastOfSameValue_3.java diff --git a/Tests/J1_1_Cast_MultipleReferenceArray.java b/Tests/A1tests/J1_1_Cast_MultipleReferenceArray.java similarity index 100% rename from Tests/J1_1_Cast_MultipleReferenceArray.java rename to Tests/A1tests/J1_1_Cast_MultipleReferenceArray.java diff --git a/Tests/J1_1_Escapes_3DigitOctalAndDigit.java b/Tests/A1tests/J1_1_Escapes_3DigitOctalAndDigit.java similarity index 100% rename from Tests/J1_1_Escapes_3DigitOctalAndDigit.java rename to Tests/A1tests/J1_1_Escapes_3DigitOctalAndDigit.java diff --git a/Tests/J1_1_Instanceof_InLazyExp.java b/Tests/A1tests/J1_1_Instanceof_InLazyExp.java similarity index 100% rename from Tests/J1_1_Instanceof_InLazyExp.java rename to Tests/A1tests/J1_1_Instanceof_InLazyExp.java diff --git a/Tests/J1_1_Instanceof_OfAdditiveExpression.java b/Tests/A1tests/J1_1_Instanceof_OfAdditiveExpression.java similarity index 100% rename from Tests/J1_1_Instanceof_OfAdditiveExpression.java rename to Tests/A1tests/J1_1_Instanceof_OfAdditiveExpression.java diff --git a/Tests/J1_1_Instanceof_OfCastExpression.java b/Tests/A1tests/J1_1_Instanceof_OfCastExpression.java similarity index 100% rename from Tests/J1_1_Instanceof_OfCastExpression.java rename to Tests/A1tests/J1_1_Instanceof_OfCastExpression.java diff --git a/Tests/J1_1_IntRange_NegativeInt.java b/Tests/A1tests/J1_1_IntRange_NegativeInt.java similarity index 100% rename from Tests/J1_1_IntRange_NegativeInt.java rename to Tests/A1tests/J1_1_IntRange_NegativeInt.java diff --git a/Tests/J1_ArrayCreateAndIndex.java b/Tests/A1tests/J1_ArrayCreateAndIndex.java similarity index 100% rename from Tests/J1_ArrayCreateAndIndex.java rename to Tests/A1tests/J1_ArrayCreateAndIndex.java diff --git a/Tests/J1_BigInt.java b/Tests/A1tests/J1_BigInt.java similarity index 100% rename from Tests/J1_BigInt.java rename to Tests/A1tests/J1_BigInt.java diff --git a/Tests/J1_CharCast.java b/Tests/A1tests/J1_CharCast.java similarity index 100% rename from Tests/J1_CharCast.java rename to Tests/A1tests/J1_CharCast.java diff --git a/Tests/J1_CharCharInit1.java b/Tests/A1tests/J1_CharCharInit1.java similarity index 100% rename from Tests/J1_CharCharInit1.java rename to Tests/A1tests/J1_CharCharInit1.java diff --git a/Tests/J1_CharCharInit2.java b/Tests/A1tests/J1_CharCharInit2.java similarity index 100% rename from Tests/J1_CharCharInit2.java rename to Tests/A1tests/J1_CharCharInit2.java diff --git a/Tests/J1_EscapeEscape.java b/Tests/A1tests/J1_EscapeEscape.java similarity index 100% rename from Tests/J1_EscapeEscape.java rename to Tests/A1tests/J1_EscapeEscape.java diff --git a/Tests/J1_ForUpdate_ClassCreation.java b/Tests/A1tests/J1_ForUpdate_ClassCreation.java similarity index 100% rename from Tests/J1_ForUpdate_ClassCreation.java rename to Tests/A1tests/J1_ForUpdate_ClassCreation.java diff --git a/Tests/J1_IntArrayDecl1.java b/Tests/A1tests/J1_IntArrayDecl1.java similarity index 100% rename from Tests/J1_IntArrayDecl1.java rename to Tests/A1tests/J1_IntArrayDecl1.java diff --git a/Tests/J1_IntArrayDecl2.java b/Tests/A1tests/J1_IntArrayDecl2.java similarity index 100% rename from Tests/J1_IntArrayDecl2.java rename to Tests/A1tests/J1_IntArrayDecl2.java diff --git a/Tests/J1_IntCast.java b/Tests/A1tests/J1_IntCast.java similarity index 100% rename from Tests/J1_IntCast.java rename to Tests/A1tests/J1_IntCast.java diff --git a/Tests/J1_IntCharInit.java b/Tests/A1tests/J1_IntCharInit.java similarity index 100% rename from Tests/J1_IntCharInit.java rename to Tests/A1tests/J1_IntCharInit.java diff --git a/Tests/J1_IntInit.java b/Tests/A1tests/J1_IntInit.java similarity index 100% rename from Tests/J1_IntInit.java rename to Tests/A1tests/J1_IntInit.java diff --git a/Tests/J1_IntRange_MinNegativeInt.java b/Tests/A1tests/J1_IntRange_MinNegativeInt.java similarity index 100% rename from Tests/J1_IntRange_MinNegativeInt.java rename to Tests/A1tests/J1_IntRange_MinNegativeInt.java diff --git a/Tests/J1_IsThisACast.java b/Tests/A1tests/J1_IsThisACast.java similarity index 100% rename from Tests/J1_IsThisACast.java rename to Tests/A1tests/J1_IsThisACast.java diff --git a/Tests/J1_NamedTypeArray.java b/Tests/A1tests/J1_NamedTypeArray.java similarity index 100% rename from Tests/J1_NamedTypeArray.java rename to Tests/A1tests/J1_NamedTypeArray.java diff --git a/Tests/J1_NegativeByteCast.java b/Tests/A1tests/J1_NegativeByteCast.java similarity index 100% rename from Tests/J1_NegativeByteCast.java rename to Tests/A1tests/J1_NegativeByteCast.java diff --git a/Tests/J1_NegativeCharCast.java b/Tests/A1tests/J1_NegativeCharCast.java similarity index 100% rename from Tests/J1_NegativeCharCast.java rename to Tests/A1tests/J1_NegativeCharCast.java diff --git a/Tests/J1_NegativeIntCast1.java b/Tests/A1tests/J1_NegativeIntCast1.java similarity index 100% rename from Tests/J1_NegativeIntCast1.java rename to Tests/A1tests/J1_NegativeIntCast1.java diff --git a/Tests/J1_NegativeIntCast2.java b/Tests/A1tests/J1_NegativeIntCast2.java similarity index 100% rename from Tests/J1_NegativeIntCast2.java rename to Tests/A1tests/J1_NegativeIntCast2.java diff --git a/Tests/J1_NegativeOneByteByteCast.java b/Tests/A1tests/J1_NegativeOneByteByteCast.java similarity index 100% rename from Tests/J1_NegativeOneByteByteCast.java rename to Tests/A1tests/J1_NegativeOneByteByteCast.java diff --git a/Tests/J1_NegativeOneByteCharCast.java b/Tests/A1tests/J1_NegativeOneByteCharCast.java similarity index 100% rename from Tests/J1_NegativeOneByteCharCast.java rename to Tests/A1tests/J1_NegativeOneByteCharCast.java diff --git a/Tests/J1_NegativeOneByteIntCast.java b/Tests/A1tests/J1_NegativeOneByteIntCast.java similarity index 100% rename from Tests/J1_NegativeOneByteIntCast.java rename to Tests/A1tests/J1_NegativeOneByteIntCast.java diff --git a/Tests/J1_NegativeOneByteShortCast.java b/Tests/A1tests/J1_NegativeOneByteShortCast.java similarity index 100% rename from Tests/J1_NegativeOneByteShortCast.java rename to Tests/A1tests/J1_NegativeOneByteShortCast.java diff --git a/Tests/J1_NegativeShortCast.java b/Tests/A1tests/J1_NegativeShortCast.java similarity index 100% rename from Tests/J1_NegativeShortCast.java rename to Tests/A1tests/J1_NegativeShortCast.java diff --git a/Tests/J1_SimpleTypeArray.java b/Tests/A1tests/J1_SimpleTypeArray.java similarity index 100% rename from Tests/J1_SimpleTypeArray.java rename to Tests/A1tests/J1_SimpleTypeArray.java diff --git a/Tests/J1_SmallInt.java b/Tests/A1tests/J1_SmallInt.java similarity index 100% rename from Tests/J1_SmallInt.java rename to Tests/A1tests/J1_SmallInt.java diff --git a/Tests/J1_abstractclass.java b/Tests/A1tests/J1_abstractclass.java similarity index 100% rename from Tests/J1_abstractclass.java rename to Tests/A1tests/J1_abstractclass.java diff --git a/Tests/J1_abstractmethodwithoutbody.java b/Tests/A1tests/J1_abstractmethodwithoutbody.java similarity index 100% rename from Tests/J1_abstractmethodwithoutbody.java rename to Tests/A1tests/J1_abstractmethodwithoutbody.java diff --git a/Tests/J1_arbitrarylocaldeclaration.java b/Tests/A1tests/J1_arbitrarylocaldeclaration.java similarity index 100% rename from Tests/J1_arbitrarylocaldeclaration.java rename to Tests/A1tests/J1_arbitrarylocaldeclaration.java diff --git a/Tests/J1_arithmeticoperations.java b/Tests/A1tests/J1_arithmeticoperations.java similarity index 100% rename from Tests/J1_arithmeticoperations.java rename to Tests/A1tests/J1_arithmeticoperations.java diff --git a/Tests/J1_assignment.java b/Tests/A1tests/J1_assignment.java similarity index 100% rename from Tests/J1_assignment.java rename to Tests/A1tests/J1_assignment.java diff --git a/Tests/J1_assignmentExp.java b/Tests/A1tests/J1_assignmentExp.java similarity index 100% rename from Tests/J1_assignmentExp.java rename to Tests/A1tests/J1_assignmentExp.java diff --git a/Tests/J1_barminusfoo.java b/Tests/A1tests/J1_barminusfoo.java similarity index 100% rename from Tests/J1_barminusfoo.java rename to Tests/A1tests/J1_barminusfoo.java diff --git a/Tests/J1_char.java b/Tests/A1tests/J1_char.java similarity index 100% rename from Tests/J1_char.java rename to Tests/A1tests/J1_char.java diff --git a/Tests/J1_char_escape.java b/Tests/A1tests/J1_char_escape.java similarity index 100% rename from Tests/J1_char_escape.java rename to Tests/A1tests/J1_char_escape.java diff --git a/Tests/J1_char_escape2.java b/Tests/A1tests/J1_char_escape2.java similarity index 100% rename from Tests/J1_char_escape2.java rename to Tests/A1tests/J1_char_escape2.java diff --git a/Tests/J1_char_escape3.java b/Tests/A1tests/J1_char_escape3.java similarity index 100% rename from Tests/J1_char_escape3.java rename to Tests/A1tests/J1_char_escape3.java diff --git a/Tests/J1_charadd.java b/Tests/A1tests/J1_charadd.java similarity index 100% rename from Tests/J1_charadd.java rename to Tests/A1tests/J1_charadd.java diff --git a/Tests/J1_charliterals.java b/Tests/A1tests/J1_charliterals.java similarity index 100% rename from Tests/J1_charliterals.java rename to Tests/A1tests/J1_charliterals.java diff --git a/Tests/J1_classinstance.java b/Tests/A1tests/J1_classinstance.java similarity index 100% rename from Tests/J1_classinstance.java rename to Tests/A1tests/J1_classinstance.java diff --git a/Tests/J1_commentsInExp1.java b/Tests/A1tests/J1_commentsInExp1.java similarity index 100% rename from Tests/J1_commentsInExp1.java rename to Tests/A1tests/J1_commentsInExp1.java diff --git a/Tests/J1_commentsInExp2.java b/Tests/A1tests/J1_commentsInExp2.java similarity index 100% rename from Tests/J1_commentsInExp2.java rename to Tests/A1tests/J1_commentsInExp2.java diff --git a/Tests/J1_commentsInExp3.java b/Tests/A1tests/J1_commentsInExp3.java similarity index 100% rename from Tests/J1_commentsInExp3.java rename to Tests/A1tests/J1_commentsInExp3.java diff --git a/Tests/J1_commentsInExp4.java b/Tests/A1tests/J1_commentsInExp4.java similarity index 100% rename from Tests/J1_commentsInExp4.java rename to Tests/A1tests/J1_commentsInExp4.java diff --git a/Tests/J1_commentsInExp5.java b/Tests/A1tests/J1_commentsInExp5.java similarity index 100% rename from Tests/J1_commentsInExp5.java rename to Tests/A1tests/J1_commentsInExp5.java diff --git a/Tests/J1_commentsInExp6.java b/Tests/A1tests/J1_commentsInExp6.java similarity index 100% rename from Tests/J1_commentsInExp6.java rename to Tests/A1tests/J1_commentsInExp6.java diff --git a/Tests/J1_commentsInExp7.java b/Tests/A1tests/J1_commentsInExp7.java similarity index 100% rename from Tests/J1_commentsInExp7.java rename to Tests/A1tests/J1_commentsInExp7.java diff --git a/Tests/J1_commentsInExp8.java b/Tests/A1tests/J1_commentsInExp8.java similarity index 100% rename from Tests/J1_commentsInExp8.java rename to Tests/A1tests/J1_commentsInExp8.java diff --git a/Tests/J1_commentsInExp9.java b/Tests/A1tests/J1_commentsInExp9.java similarity index 100% rename from Tests/J1_commentsInExp9.java rename to Tests/A1tests/J1_commentsInExp9.java diff --git a/Tests/J1_comparisonoperations.java b/Tests/A1tests/J1_comparisonoperations.java similarity index 100% rename from Tests/J1_comparisonoperations.java rename to Tests/A1tests/J1_comparisonoperations.java diff --git a/Tests/J1_concat_in_binop.java b/Tests/A1tests/J1_concat_in_binop.java similarity index 100% rename from Tests/J1_concat_in_binop.java rename to Tests/A1tests/J1_concat_in_binop.java diff --git a/Tests/J1_constructorWithSameNameAsMethod.java b/Tests/A1tests/J1_constructorWithSameNameAsMethod.java similarity index 100% rename from Tests/J1_constructorWithSameNameAsMethod.java rename to Tests/A1tests/J1_constructorWithSameNameAsMethod.java diff --git a/Tests/J1_constructorbodycast.java b/Tests/A1tests/J1_constructorbodycast.java similarity index 100% rename from Tests/J1_constructorbodycast.java rename to Tests/A1tests/J1_constructorbodycast.java diff --git a/Tests/J1_constructorparameter.java b/Tests/A1tests/J1_constructorparameter.java similarity index 100% rename from Tests/J1_constructorparameter.java rename to Tests/A1tests/J1_constructorparameter.java diff --git a/Tests/J1_eagerbooleanoperations.java b/Tests/A1tests/J1_eagerbooleanoperations.java similarity index 100% rename from Tests/J1_eagerbooleanoperations.java rename to Tests/A1tests/J1_eagerbooleanoperations.java diff --git a/Tests/J1_evalMethodInvocationFromParExp.java b/Tests/A1tests/J1_evalMethodInvocationFromParExp.java similarity index 100% rename from Tests/J1_evalMethodInvocationFromParExp.java rename to Tests/A1tests/J1_evalMethodInvocationFromParExp.java diff --git a/Tests/J1_exp.java b/Tests/A1tests/J1_exp.java similarity index 100% rename from Tests/J1_exp.java rename to Tests/A1tests/J1_exp.java diff --git a/Tests/J1_extends.java b/Tests/A1tests/J1_extends.java similarity index 100% rename from Tests/J1_extends.java rename to Tests/A1tests/J1_extends.java diff --git a/Tests/J1_externalcall.java b/Tests/A1tests/J1_externalcall.java similarity index 100% rename from Tests/J1_externalcall.java rename to Tests/A1tests/J1_externalcall.java diff --git a/Tests/J1_finalclass.java b/Tests/A1tests/J1_finalclass.java similarity index 100% rename from Tests/J1_finalclass.java rename to Tests/A1tests/J1_finalclass.java diff --git a/Tests/J1_finalclass2.java b/Tests/A1tests/J1_finalclass2.java similarity index 100% rename from Tests/J1_finalclass2.java rename to Tests/A1tests/J1_finalclass2.java diff --git a/Tests/J1_forAllwaysInit.java b/Tests/A1tests/J1_forAllwaysInit.java similarity index 100% rename from Tests/J1_forAllwaysInit.java rename to Tests/A1tests/J1_forAllwaysInit.java diff --git a/Tests/J1_forAlwaysInitAsWhile.java b/Tests/A1tests/J1_forAlwaysInitAsWhile.java similarity index 100% rename from Tests/J1_forAlwaysInitAsWhile.java rename to Tests/A1tests/J1_forAlwaysInitAsWhile.java diff --git a/Tests/J1_forMethodInit.java b/Tests/A1tests/J1_forMethodInit.java similarity index 100% rename from Tests/J1_forMethodInit.java rename to Tests/A1tests/J1_forMethodInit.java diff --git a/Tests/J1_forMethodUpdate.java b/Tests/A1tests/J1_forMethodUpdate.java similarity index 100% rename from Tests/J1_forMethodUpdate.java rename to Tests/A1tests/J1_forMethodUpdate.java diff --git a/Tests/J1_forMethodUpdate2.java b/Tests/A1tests/J1_forMethodUpdate2.java similarity index 100% rename from Tests/J1_forMethodUpdate2.java rename to Tests/A1tests/J1_forMethodUpdate2.java diff --git a/Tests/J1_forWithoutExp.java b/Tests/A1tests/J1_forWithoutExp.java similarity index 100% rename from Tests/J1_forWithoutExp.java rename to Tests/A1tests/J1_forWithoutExp.java diff --git a/Tests/J1_forWithoutInit.java b/Tests/A1tests/J1_forWithoutInit.java similarity index 100% rename from Tests/J1_forWithoutInit.java rename to Tests/A1tests/J1_forWithoutInit.java diff --git a/Tests/J1_forWithoutUpdate.java b/Tests/A1tests/J1_forWithoutUpdate.java similarity index 100% rename from Tests/J1_forWithoutUpdate.java rename to Tests/A1tests/J1_forWithoutUpdate.java diff --git a/Tests/J1_for_no_short_if.java b/Tests/A1tests/J1_for_no_short_if.java similarity index 100% rename from Tests/J1_for_no_short_if.java rename to Tests/A1tests/J1_for_no_short_if.java diff --git a/Tests/J1_forbodycast.java b/Tests/A1tests/J1_forbodycast.java similarity index 100% rename from Tests/J1_forbodycast.java rename to Tests/A1tests/J1_forbodycast.java diff --git a/Tests/J1_forifstatements1.java b/Tests/A1tests/J1_forifstatements1.java similarity index 100% rename from Tests/J1_forifstatements1.java rename to Tests/A1tests/J1_forifstatements1.java diff --git a/Tests/J1_forifstatements2.java b/Tests/A1tests/J1_forifstatements2.java similarity index 100% rename from Tests/J1_forifstatements2.java rename to Tests/A1tests/J1_forifstatements2.java diff --git a/Tests/J1_forifstatements3.java b/Tests/A1tests/J1_forifstatements3.java similarity index 100% rename from Tests/J1_forifstatements3.java rename to Tests/A1tests/J1_forifstatements3.java diff --git a/Tests/J1_forinfor.java b/Tests/A1tests/J1_forinfor.java similarity index 100% rename from Tests/J1_forinfor.java rename to Tests/A1tests/J1_forinfor.java diff --git a/Tests/J1_forinitcast.java b/Tests/A1tests/J1_forinitcast.java similarity index 100% rename from Tests/J1_forinitcast.java rename to Tests/A1tests/J1_forinitcast.java diff --git a/Tests/J1_forupdatecast.java b/Tests/A1tests/J1_forupdatecast.java similarity index 100% rename from Tests/J1_forupdatecast.java rename to Tests/A1tests/J1_forupdatecast.java diff --git a/Tests/J1_hello_comment.java b/Tests/A1tests/J1_hello_comment.java similarity index 100% rename from Tests/J1_hello_comment.java rename to Tests/A1tests/J1_hello_comment.java diff --git a/Tests/J1_if.java b/Tests/A1tests/J1_if.java similarity index 100% rename from Tests/J1_if.java rename to Tests/A1tests/J1_if.java diff --git a/Tests/J1_ifThenElse.java b/Tests/A1tests/J1_ifThenElse.java similarity index 100% rename from Tests/J1_ifThenElse.java rename to Tests/A1tests/J1_ifThenElse.java diff --git a/Tests/J1_if_then.java b/Tests/A1tests/J1_if_then.java similarity index 100% rename from Tests/J1_if_then.java rename to Tests/A1tests/J1_if_then.java diff --git a/Tests/J1_if_then_for.java b/Tests/A1tests/J1_if_then_for.java similarity index 100% rename from Tests/J1_if_then_for.java rename to Tests/A1tests/J1_if_then_for.java diff --git a/Tests/J1_implements.java b/Tests/A1tests/J1_implements.java similarity index 100% rename from Tests/J1_implements.java rename to Tests/A1tests/J1_implements.java diff --git a/Tests/J1_integerFun.java b/Tests/A1tests/J1_integerFun.java similarity index 100% rename from Tests/J1_integerFun.java rename to Tests/A1tests/J1_integerFun.java diff --git a/Tests/J1_integerFun1.java b/Tests/A1tests/J1_integerFun1.java similarity index 100% rename from Tests/J1_integerFun1.java rename to Tests/A1tests/J1_integerFun1.java diff --git a/Tests/J1_integerFun3.java b/Tests/A1tests/J1_integerFun3.java similarity index 100% rename from Tests/J1_integerFun3.java rename to Tests/A1tests/J1_integerFun3.java diff --git a/Tests/J1_intliterals.java b/Tests/A1tests/J1_intliterals.java similarity index 100% rename from Tests/J1_intliterals.java rename to Tests/A1tests/J1_intliterals.java diff --git a/Tests/J1_intminusfoo.java b/Tests/A1tests/J1_intminusfoo.java similarity index 100% rename from Tests/J1_intminusfoo.java rename to Tests/A1tests/J1_intminusfoo.java diff --git a/Tests/J1_lazybooleanoperations.java b/Tests/A1tests/J1_lazybooleanoperations.java similarity index 100% rename from Tests/J1_lazybooleanoperations.java rename to Tests/A1tests/J1_lazybooleanoperations.java diff --git a/Tests/J1_maxint_comment.java b/Tests/A1tests/J1_maxint_comment.java similarity index 100% rename from Tests/J1_maxint_comment.java rename to Tests/A1tests/J1_maxint_comment.java diff --git a/Tests/J1_minuschar.java b/Tests/A1tests/J1_minuschar.java similarity index 100% rename from Tests/J1_minuschar.java rename to Tests/A1tests/J1_minuschar.java diff --git a/Tests/J1_minusminusminus.java b/Tests/A1tests/J1_minusminusminus.java similarity index 100% rename from Tests/J1_minusminusminus.java rename to Tests/A1tests/J1_minusminusminus.java diff --git a/Tests/J1_negativeintcast3.java b/Tests/A1tests/J1_negativeintcast3.java similarity index 100% rename from Tests/J1_negativeintcast3.java rename to Tests/A1tests/J1_negativeintcast3.java diff --git a/Tests/J1_newobject.java b/Tests/A1tests/J1_newobject.java similarity index 100% rename from Tests/J1_newobject.java rename to Tests/A1tests/J1_newobject.java diff --git a/Tests/J1_nonemptyconstructor.java b/Tests/A1tests/J1_nonemptyconstructor.java similarity index 100% rename from Tests/J1_nonemptyconstructor.java rename to Tests/A1tests/J1_nonemptyconstructor.java diff --git a/Tests/J1_nullinstanceof1.java b/Tests/A1tests/J1_nullinstanceof1.java similarity index 100% rename from Tests/J1_nullinstanceof1.java rename to Tests/A1tests/J1_nullinstanceof1.java diff --git a/Tests/J1_nullliteral.java b/Tests/A1tests/J1_nullliteral.java similarity index 100% rename from Tests/J1_nullliteral.java rename to Tests/A1tests/J1_nullliteral.java diff --git a/Tests/J1_octal_escape.java b/Tests/A1tests/J1_octal_escape.java similarity index 100% rename from Tests/J1_octal_escape.java rename to Tests/A1tests/J1_octal_escape.java diff --git a/Tests/J1_octal_escape2.java b/Tests/A1tests/J1_octal_escape2.java similarity index 100% rename from Tests/J1_octal_escape2.java rename to Tests/A1tests/J1_octal_escape2.java diff --git a/Tests/J1_octal_escape3.java b/Tests/A1tests/J1_octal_escape3.java similarity index 100% rename from Tests/J1_octal_escape3.java rename to Tests/A1tests/J1_octal_escape3.java diff --git a/Tests/J1_octal_escape4.java b/Tests/A1tests/J1_octal_escape4.java similarity index 100% rename from Tests/J1_octal_escape4.java rename to Tests/A1tests/J1_octal_escape4.java diff --git a/Tests/J1_octal_escape5.java b/Tests/A1tests/J1_octal_escape5.java similarity index 100% rename from Tests/J1_octal_escape5.java rename to Tests/A1tests/J1_octal_escape5.java diff --git a/Tests/J1_primitivecasts.java b/Tests/A1tests/J1_primitivecasts.java similarity index 100% rename from Tests/J1_primitivecasts.java rename to Tests/A1tests/J1_primitivecasts.java diff --git a/Tests/J1_protected.java b/Tests/A1tests/J1_protected.java similarity index 100% rename from Tests/J1_protected.java rename to Tests/A1tests/J1_protected.java diff --git a/Tests/J1_protectedfields.java b/Tests/A1tests/J1_protectedfields.java similarity index 100% rename from Tests/J1_protectedfields.java rename to Tests/A1tests/J1_protectedfields.java diff --git a/Tests/J1_publicclasses.java b/Tests/A1tests/J1_publicclasses.java similarity index 100% rename from Tests/J1_publicclasses.java rename to Tests/A1tests/J1_publicclasses.java diff --git a/Tests/J1_publicconstructors.java b/Tests/A1tests/J1_publicconstructors.java similarity index 100% rename from Tests/J1_publicconstructors.java rename to Tests/A1tests/J1_publicconstructors.java diff --git a/Tests/J1_publicfields.java b/Tests/A1tests/J1_publicfields.java similarity index 100% rename from Tests/J1_publicfields.java rename to Tests/A1tests/J1_publicfields.java diff --git a/Tests/J1_publicmethods.java b/Tests/A1tests/J1_publicmethods.java similarity index 100% rename from Tests/J1_publicmethods.java rename to Tests/A1tests/J1_publicmethods.java diff --git a/Tests/J1_staticmethoddeclaration.java b/Tests/A1tests/J1_staticmethoddeclaration.java similarity index 100% rename from Tests/J1_staticmethoddeclaration.java rename to Tests/A1tests/J1_staticmethoddeclaration.java diff --git a/Tests/J1_stringliteralinvoke.java b/Tests/A1tests/J1_stringliteralinvoke.java similarity index 100% rename from Tests/J1_stringliteralinvoke.java rename to Tests/A1tests/J1_stringliteralinvoke.java diff --git a/Tests/J1_stringliterals.java b/Tests/A1tests/J1_stringliterals.java similarity index 100% rename from Tests/J1_stringliterals.java rename to Tests/A1tests/J1_stringliterals.java diff --git a/Tests/J1_weird_chars.java b/Tests/A1tests/J1_weird_chars.java similarity index 100% rename from Tests/J1_weird_chars.java rename to Tests/A1tests/J1_weird_chars.java diff --git a/Tests/J1w_Interface.java b/Tests/A1tests/J1w_Interface.java similarity index 100% rename from Tests/J1w_Interface.java rename to Tests/A1tests/J1w_Interface.java diff --git a/Tests/J1w_RestrictedNative.java b/Tests/A1tests/J1w_RestrictedNative.java similarity index 100% rename from Tests/J1w_RestrictedNative.java rename to Tests/A1tests/J1w_RestrictedNative.java diff --git a/Tests/J1w_StaticField.java b/Tests/A1tests/J1w_StaticField.java similarity index 100% rename from Tests/J1w_StaticField.java rename to Tests/A1tests/J1w_StaticField.java diff --git a/Tests/J2_staticFieldDecl.java b/Tests/A1tests/J2_staticFieldDecl.java similarity index 100% rename from Tests/J2_staticFieldDecl.java rename to Tests/A1tests/J2_staticFieldDecl.java diff --git a/Tests/J2_staticfielddeclaration.java b/Tests/A1tests/J2_staticfielddeclaration.java similarity index 100% rename from Tests/J2_staticfielddeclaration.java rename to Tests/A1tests/J2_staticfielddeclaration.java diff --git a/Tests/Je_16_Circularity_1.java b/Tests/A1tests/Je_16_Circularity_1.java similarity index 100% rename from Tests/Je_16_Circularity_1.java rename to Tests/A1tests/Je_16_Circularity_1.java diff --git a/Tests/Je_16_Circularity_2.java b/Tests/A1tests/Je_16_Circularity_2.java similarity index 100% rename from Tests/Je_16_Circularity_2.java rename to Tests/A1tests/Je_16_Circularity_2.java diff --git a/Tests/Je_16_Circularity_3.java b/Tests/A1tests/Je_16_Circularity_3.java similarity index 100% rename from Tests/Je_16_Circularity_3.java rename to Tests/A1tests/Je_16_Circularity_3.java diff --git a/Tests/Je_16_Circularity_4_Rhoshaped.java b/Tests/A1tests/Je_16_Circularity_4_Rhoshaped.java similarity index 100% rename from Tests/Je_16_Circularity_4_Rhoshaped.java rename to Tests/A1tests/Je_16_Circularity_4_Rhoshaped.java diff --git a/Tests/Je_16_ClosestMatch_Array.java b/Tests/A1tests/Je_16_ClosestMatch_Array.java similarity index 100% rename from Tests/Je_16_ClosestMatch_Array.java rename to Tests/A1tests/Je_16_ClosestMatch_Array.java diff --git a/Tests/Je_16_ClosestMatch_Constructor_NoClosestMatch_This.java b/Tests/A1tests/Je_16_ClosestMatch_Constructor_NoClosestMatch_This.java similarity index 100% rename from Tests/Je_16_ClosestMatch_Constructor_NoClosestMatch_This.java rename to Tests/A1tests/Je_16_ClosestMatch_Constructor_NoClosestMatch_This.java diff --git a/Tests/Je_16_IncDec_Final_ArrayLengthDec.java b/Tests/A1tests/Je_16_IncDec_Final_ArrayLengthDec.java similarity index 100% rename from Tests/Je_16_IncDec_Final_ArrayLengthDec.java rename to Tests/A1tests/Je_16_IncDec_Final_ArrayLengthDec.java diff --git a/Tests/Je_16_IncDec_Final_ArrayLengthInc.java b/Tests/A1tests/Je_16_IncDec_Final_ArrayLengthInc.java similarity index 100% rename from Tests/Je_16_IncDec_Final_ArrayLengthInc.java rename to Tests/A1tests/Je_16_IncDec_Final_ArrayLengthInc.java diff --git a/Tests/Je_16_IncDec_Final_PostDec.java b/Tests/A1tests/Je_16_IncDec_Final_PostDec.java similarity index 100% rename from Tests/Je_16_IncDec_Final_PostDec.java rename to Tests/A1tests/Je_16_IncDec_Final_PostDec.java diff --git a/Tests/Je_16_IncDec_Final_PostInc.java b/Tests/A1tests/Je_16_IncDec_Final_PostInc.java similarity index 100% rename from Tests/Je_16_IncDec_Final_PostInc.java rename to Tests/A1tests/Je_16_IncDec_Final_PostInc.java diff --git a/Tests/Je_16_IncDec_Final_PreDec.java b/Tests/A1tests/Je_16_IncDec_Final_PreDec.java similarity index 100% rename from Tests/Je_16_IncDec_Final_PreDec.java rename to Tests/A1tests/Je_16_IncDec_Final_PreDec.java diff --git a/Tests/Je_16_IncDec_Final_PreInc.java b/Tests/A1tests/Je_16_IncDec_Final_PreInc.java similarity index 100% rename from Tests/Je_16_IncDec_Final_PreInc.java rename to Tests/A1tests/Je_16_IncDec_Final_PreInc.java diff --git a/Tests/Je_16_IncDec_StringPostDec.java b/Tests/A1tests/Je_16_IncDec_StringPostDec.java similarity index 100% rename from Tests/Je_16_IncDec_StringPostDec.java rename to Tests/A1tests/Je_16_IncDec_StringPostDec.java diff --git a/Tests/Je_16_IncDec_StringPostInc.java b/Tests/A1tests/Je_16_IncDec_StringPostInc.java similarity index 100% rename from Tests/Je_16_IncDec_StringPostInc.java rename to Tests/A1tests/Je_16_IncDec_StringPostInc.java diff --git a/Tests/Je_16_IncDec_StringPreDec.java b/Tests/A1tests/Je_16_IncDec_StringPreDec.java similarity index 100% rename from Tests/Je_16_IncDec_StringPreDec.java rename to Tests/A1tests/Je_16_IncDec_StringPreDec.java diff --git a/Tests/Je_16_IncDec_StringPreInc.java b/Tests/A1tests/Je_16_IncDec_StringPreInc.java similarity index 100% rename from Tests/Je_16_IncDec_StringPreInc.java rename to Tests/A1tests/Je_16_IncDec_StringPreInc.java diff --git a/Tests/Je_16_MultiArrayCreation_Assign_1.java b/Tests/A1tests/Je_16_MultiArrayCreation_Assign_1.java similarity index 100% rename from Tests/Je_16_MultiArrayCreation_Assign_1.java rename to Tests/A1tests/Je_16_MultiArrayCreation_Assign_1.java diff --git a/Tests/Je_16_MultiArrayCreation_Null.java b/Tests/A1tests/Je_16_MultiArrayCreation_Null.java similarity index 100% rename from Tests/Je_16_MultiArrayCreation_Null.java rename to Tests/A1tests/Je_16_MultiArrayCreation_Null.java diff --git a/Tests/Je_16_StaticThis_ArgumentToSuper.java b/Tests/A1tests/Je_16_StaticThis_ArgumentToSuper.java similarity index 100% rename from Tests/Je_16_StaticThis_ArgumentToSuper.java rename to Tests/A1tests/Je_16_StaticThis_ArgumentToSuper.java diff --git a/Tests/Je_16_StaticThis_ArgumentToThis.java b/Tests/A1tests/Je_16_StaticThis_ArgumentToThis.java similarity index 100% rename from Tests/Je_16_StaticThis_ArgumentToThis.java rename to Tests/A1tests/Je_16_StaticThis_ArgumentToThis.java diff --git a/Tests/Je_16_SuperThis_InvalidSuperParameter.java b/Tests/A1tests/Je_16_SuperThis_InvalidSuperParameter.java similarity index 100% rename from Tests/Je_16_SuperThis_InvalidSuperParameter.java rename to Tests/A1tests/Je_16_SuperThis_InvalidSuperParameter.java diff --git a/Tests/Je_16_SuperThis_InvalidThisParameter.java b/Tests/A1tests/Je_16_SuperThis_InvalidThisParameter.java similarity index 100% rename from Tests/Je_16_SuperThis_InvalidThisParameter.java rename to Tests/A1tests/Je_16_SuperThis_InvalidThisParameter.java diff --git a/Tests/Je_16_Throw_NoThrows.java b/Tests/A1tests/Je_16_Throw_NoThrows.java similarity index 100% rename from Tests/Je_16_Throw_NoThrows.java rename to Tests/A1tests/Je_16_Throw_NoThrows.java diff --git a/Tests/Je_16_Throw_NotSubclass.java b/Tests/A1tests/Je_16_Throw_NotSubclass.java similarity index 100% rename from Tests/Je_16_Throw_NotSubclass.java rename to Tests/A1tests/Je_16_Throw_NotSubclass.java diff --git a/Tests/Je_16_Throw_SimpleType.java b/Tests/A1tests/Je_16_Throw_SimpleType.java similarity index 100% rename from Tests/Je_16_Throw_SimpleType.java rename to Tests/A1tests/Je_16_Throw_SimpleType.java diff --git a/Tests/Je_16_Throw_ThrowsNotSuperclass.java b/Tests/A1tests/Je_16_Throw_ThrowsNotSuperclass.java similarity index 100% rename from Tests/Je_16_Throw_ThrowsNotSuperclass.java rename to Tests/A1tests/Je_16_Throw_ThrowsNotSuperclass.java diff --git a/Tests/Je_16_Throws_This.java b/Tests/A1tests/Je_16_Throws_This.java similarity index 100% rename from Tests/Je_16_Throws_This.java rename to Tests/A1tests/Je_16_Throws_This.java diff --git a/Tests/Je_17_Unreachable_AfterThrow.java b/Tests/A1tests/Je_17_Unreachable_AfterThrow.java similarity index 100% rename from Tests/Je_17_Unreachable_AfterThrow.java rename to Tests/A1tests/Je_17_Unreachable_AfterThrow.java diff --git a/Tests/Je_17_Unreachable_AfterThrowInConditional.java b/Tests/A1tests/Je_17_Unreachable_AfterThrowInConditional.java similarity index 100% rename from Tests/Je_17_Unreachable_AfterThrowInConditional.java rename to Tests/A1tests/Je_17_Unreachable_AfterThrowInConditional.java diff --git a/Tests/Je_1_AbstractClass_AbstractConstructor.java b/Tests/A1tests/Je_1_AbstractClass_AbstractConstructor.java similarity index 100% rename from Tests/Je_1_AbstractClass_AbstractConstructor.java rename to Tests/A1tests/Je_1_AbstractClass_AbstractConstructor.java diff --git a/Tests/Je_1_AbstractClass_Final.java b/Tests/A1tests/Je_1_AbstractClass_Final.java similarity index 100% rename from Tests/Je_1_AbstractClass_Final.java rename to Tests/A1tests/Je_1_AbstractClass_Final.java diff --git a/Tests/Je_1_AbstractMethodCannotBeFinal.java b/Tests/A1tests/Je_1_AbstractMethodCannotBeFinal.java similarity index 100% rename from Tests/Je_1_AbstractMethodCannotBeFinal.java rename to Tests/A1tests/Je_1_AbstractMethodCannotBeFinal.java diff --git a/Tests/Je_1_AbstractMethod_Body.java b/Tests/A1tests/Je_1_AbstractMethod_Body.java similarity index 100% rename from Tests/Je_1_AbstractMethod_Body.java rename to Tests/A1tests/Je_1_AbstractMethod_Body.java diff --git a/Tests/Je_1_AbstractMethod_EmptyBody.java b/Tests/A1tests/Je_1_AbstractMethod_EmptyBody.java similarity index 100% rename from Tests/Je_1_AbstractMethod_EmptyBody.java rename to Tests/A1tests/Je_1_AbstractMethod_EmptyBody.java diff --git a/Tests/Je_1_AbstractMethod_Final.java b/Tests/A1tests/Je_1_AbstractMethod_Final.java similarity index 100% rename from Tests/Je_1_AbstractMethod_Final.java rename to Tests/A1tests/Je_1_AbstractMethod_Final.java diff --git a/Tests/Je_1_AbstractMethod_Static.java b/Tests/A1tests/Je_1_AbstractMethod_Static.java similarity index 100% rename from Tests/Je_1_AbstractMethod_Static.java rename to Tests/A1tests/Je_1_AbstractMethod_Static.java diff --git a/Tests/Je_1_Access_PrivateLocal.java b/Tests/A1tests/Je_1_Access_PrivateLocal.java similarity index 100% rename from Tests/Je_1_Access_PrivateLocal.java rename to Tests/A1tests/Je_1_Access_PrivateLocal.java diff --git a/Tests/Je_1_Access_ProtectedLocal.java b/Tests/A1tests/Je_1_Access_ProtectedLocal.java similarity index 100% rename from Tests/Je_1_Access_ProtectedLocal.java rename to Tests/A1tests/Je_1_Access_ProtectedLocal.java diff --git a/Tests/Je_1_Access_PublicLocal.java b/Tests/A1tests/Je_1_Access_PublicLocal.java similarity index 100% rename from Tests/Je_1_Access_PublicLocal.java rename to Tests/A1tests/Je_1_Access_PublicLocal.java diff --git a/Tests/Je_1_Array_Data.java b/Tests/A1tests/Je_1_Array_Data.java similarity index 100% rename from Tests/Je_1_Array_Data.java rename to Tests/A1tests/Je_1_Array_Data.java diff --git a/Tests/Je_1_Array_Data_Empty.java b/Tests/A1tests/Je_1_Array_Data_Empty.java similarity index 100% rename from Tests/Je_1_Array_Data_Empty.java rename to Tests/A1tests/Je_1_Array_Data_Empty.java diff --git a/Tests/Je_1_Array_OnVariableNameInDecl.java b/Tests/A1tests/Je_1_Array_OnVariableNameInDecl.java similarity index 100% rename from Tests/Je_1_Array_OnVariableNameInDecl.java rename to Tests/A1tests/Je_1_Array_OnVariableNameInDecl.java diff --git a/Tests/Je_1_CastToArrayLvalue.java b/Tests/A1tests/Je_1_CastToArrayLvalue.java similarity index 100% rename from Tests/Je_1_CastToArrayLvalue.java rename to Tests/A1tests/Je_1_CastToArrayLvalue.java diff --git a/Tests/Je_1_Cast_DoubleParenthese.java b/Tests/A1tests/Je_1_Cast_DoubleParenthese.java similarity index 100% rename from Tests/Je_1_Cast_DoubleParenthese.java rename to Tests/A1tests/Je_1_Cast_DoubleParenthese.java diff --git a/Tests/Je_1_Cast_Expression.java b/Tests/A1tests/Je_1_Cast_Expression.java similarity index 100% rename from Tests/Je_1_Cast_Expression.java rename to Tests/A1tests/Je_1_Cast_Expression.java diff --git a/Tests/Je_1_Cast_LeftHandSideOfAssignment_1.java b/Tests/A1tests/Je_1_Cast_LeftHandSideOfAssignment_1.java similarity index 100% rename from Tests/Je_1_Cast_LeftHandSideOfAssignment_1.java rename to Tests/A1tests/Je_1_Cast_LeftHandSideOfAssignment_1.java diff --git a/Tests/Je_1_Cast_LeftHandSideOfAssignment_2.java b/Tests/A1tests/Je_1_Cast_LeftHandSideOfAssignment_2.java similarity index 100% rename from Tests/Je_1_Cast_LeftHandSideOfAssignment_2.java rename to Tests/A1tests/Je_1_Cast_LeftHandSideOfAssignment_2.java diff --git a/Tests/Je_1_Cast_NoParenthesis.java b/Tests/A1tests/Je_1_Cast_NoParenthesis.java similarity index 100% rename from Tests/Je_1_Cast_NoParenthesis.java rename to Tests/A1tests/Je_1_Cast_NoParenthesis.java diff --git a/Tests/Je_1_Cast_NonstaticField.java b/Tests/A1tests/Je_1_Cast_NonstaticField.java similarity index 100% rename from Tests/Je_1_Cast_NonstaticField.java rename to Tests/A1tests/Je_1_Cast_NonstaticField.java diff --git a/Tests/Je_1_Cast_ToMethodInvoke.java b/Tests/A1tests/Je_1_Cast_ToMethodInvoke.java similarity index 100% rename from Tests/Je_1_Cast_ToMethodInvoke.java rename to Tests/A1tests/Je_1_Cast_ToMethodInvoke.java diff --git a/Tests/Je_1_ClassDeclaration_WrongFileName.java b/Tests/A1tests/Je_1_ClassDeclaration_WrongFileName.java similarity index 100% rename from Tests/Je_1_ClassDeclaration_WrongFileName.java rename to Tests/A1tests/Je_1_ClassDeclaration_WrongFileName.java diff --git a/Tests/Je_1_ClassDeclaration_WrongFileName_Dot.foo.java b/Tests/A1tests/Je_1_ClassDeclaration_WrongFileName_Dot.foo.java similarity index 100% rename from Tests/Je_1_ClassDeclaration_WrongFileName_Dot.foo.java rename to Tests/A1tests/Je_1_ClassDeclaration_WrongFileName_Dot.foo.java diff --git a/Tests/Je_1_ClassDeclaration_WrongFileName_Suffix.java b/Tests/A1tests/Je_1_ClassDeclaration_WrongFileName_Suffix.java similarity index 100% rename from Tests/Je_1_ClassDeclaration_WrongFileName_Suffix.java rename to Tests/A1tests/Je_1_ClassDeclaration_WrongFileName_Suffix.java diff --git a/Tests/Je_1_ClassInstantiation_InstantiateSimpleType.java b/Tests/A1tests/Je_1_ClassInstantiation_InstantiateSimpleType.java similarity index 100% rename from Tests/Je_1_ClassInstantiation_InstantiateSimpleType.java rename to Tests/A1tests/Je_1_ClassInstantiation_InstantiateSimpleType.java diff --git a/Tests/Je_1_ClassInstantiation_InstantiateSimpleValue.java b/Tests/A1tests/Je_1_ClassInstantiation_InstantiateSimpleValue.java similarity index 100% rename from Tests/Je_1_ClassInstantiation_InstantiateSimpleValue.java rename to Tests/A1tests/Je_1_ClassInstantiation_InstantiateSimpleValue.java diff --git a/Tests/Je_1_Declarations_MultipleVars.java b/Tests/A1tests/Je_1_Declarations_MultipleVars.java similarity index 100% rename from Tests/Je_1_Declarations_MultipleVars.java rename to Tests/A1tests/Je_1_Declarations_MultipleVars.java diff --git a/Tests/Je_1_Declarations_MultipleVars_Fields.java b/Tests/A1tests/Je_1_Declarations_MultipleVars_Fields.java similarity index 100% rename from Tests/Je_1_Declarations_MultipleVars_Fields.java rename to Tests/A1tests/Je_1_Declarations_MultipleVars_Fields.java diff --git a/Tests/Je_1_Escapes_1DigitOctal_1.java b/Tests/A1tests/Je_1_Escapes_1DigitOctal_1.java similarity index 100% rename from Tests/Je_1_Escapes_1DigitOctal_1.java rename to Tests/A1tests/Je_1_Escapes_1DigitOctal_1.java diff --git a/Tests/Je_1_Escapes_1DigitOctal_2.java b/Tests/A1tests/Je_1_Escapes_1DigitOctal_2.java similarity index 100% rename from Tests/Je_1_Escapes_1DigitOctal_2.java rename to Tests/A1tests/Je_1_Escapes_1DigitOctal_2.java diff --git a/Tests/Je_1_Escapes_1DigitOctal_3.java b/Tests/A1tests/Je_1_Escapes_1DigitOctal_3.java similarity index 100% rename from Tests/Je_1_Escapes_1DigitOctal_3.java rename to Tests/A1tests/Je_1_Escapes_1DigitOctal_3.java diff --git a/Tests/Je_1_Escapes_1DigitOctal_4.java b/Tests/A1tests/Je_1_Escapes_1DigitOctal_4.java similarity index 100% rename from Tests/Je_1_Escapes_1DigitOctal_4.java rename to Tests/A1tests/Je_1_Escapes_1DigitOctal_4.java diff --git a/Tests/Je_1_Escapes_2DigitOctal_1.java b/Tests/A1tests/Je_1_Escapes_2DigitOctal_1.java similarity index 100% rename from Tests/Je_1_Escapes_2DigitOctal_1.java rename to Tests/A1tests/Je_1_Escapes_2DigitOctal_1.java diff --git a/Tests/Je_1_Escapes_2DigitOctal_2.java b/Tests/A1tests/Je_1_Escapes_2DigitOctal_2.java similarity index 100% rename from Tests/Je_1_Escapes_2DigitOctal_2.java rename to Tests/A1tests/Je_1_Escapes_2DigitOctal_2.java diff --git a/Tests/Je_1_Escapes_2DigitOctal_3.java b/Tests/A1tests/Je_1_Escapes_2DigitOctal_3.java similarity index 100% rename from Tests/Je_1_Escapes_2DigitOctal_3.java rename to Tests/A1tests/Je_1_Escapes_2DigitOctal_3.java diff --git a/Tests/Je_1_Escapes_3DigitOctal_1.java b/Tests/A1tests/Je_1_Escapes_3DigitOctal_1.java similarity index 100% rename from Tests/Je_1_Escapes_3DigitOctal_1.java rename to Tests/A1tests/Je_1_Escapes_3DigitOctal_1.java diff --git a/Tests/Je_1_Escapes_3DigitOctal_2.java b/Tests/A1tests/Je_1_Escapes_3DigitOctal_2.java similarity index 100% rename from Tests/Je_1_Escapes_3DigitOctal_2.java rename to Tests/A1tests/Je_1_Escapes_3DigitOctal_2.java diff --git a/Tests/Je_1_Escapes_3DigitOctal_3.java b/Tests/A1tests/Je_1_Escapes_3DigitOctal_3.java similarity index 100% rename from Tests/Je_1_Escapes_3DigitOctal_3.java rename to Tests/A1tests/Je_1_Escapes_3DigitOctal_3.java diff --git a/Tests/Je_1_Escapes_NonExistingEscape.java b/Tests/A1tests/Je_1_Escapes_NonExistingEscape.java similarity index 100% rename from Tests/Je_1_Escapes_NonExistingEscape.java rename to Tests/A1tests/Je_1_Escapes_NonExistingEscape.java diff --git a/Tests/Je_1_Extends_NamedTypeArray.java b/Tests/A1tests/Je_1_Extends_NamedTypeArray.java similarity index 100% rename from Tests/Je_1_Extends_NamedTypeArray.java rename to Tests/A1tests/Je_1_Extends_NamedTypeArray.java diff --git a/Tests/Je_1_Extends_SimpleType.java b/Tests/A1tests/Je_1_Extends_SimpleType.java similarity index 100% rename from Tests/Je_1_Extends_SimpleType.java rename to Tests/A1tests/Je_1_Extends_SimpleType.java diff --git a/Tests/Je_1_Extends_SimpleTypeArray.java b/Tests/A1tests/Je_1_Extends_SimpleTypeArray.java similarity index 100% rename from Tests/Je_1_Extends_SimpleTypeArray.java rename to Tests/A1tests/Je_1_Extends_SimpleTypeArray.java diff --git a/Tests/Je_1_Extends_Value.java b/Tests/A1tests/Je_1_Extends_Value.java similarity index 100% rename from Tests/Je_1_Extends_Value.java rename to Tests/A1tests/Je_1_Extends_Value.java diff --git a/Tests/Je_1_FinalField_NoInitializer.java b/Tests/A1tests/Je_1_FinalField_NoInitializer.java similarity index 100% rename from Tests/Je_1_FinalField_NoInitializer.java rename to Tests/A1tests/Je_1_FinalField_NoInitializer.java diff --git a/Tests/Je_1_For_DeclarationInUpdate.java b/Tests/A1tests/Je_1_For_DeclarationInUpdate.java similarity index 100% rename from Tests/Je_1_For_DeclarationInUpdate.java rename to Tests/A1tests/Je_1_For_DeclarationInUpdate.java diff --git a/Tests/Je_1_For_MultipleDeclarationsInInit.java b/Tests/A1tests/Je_1_For_MultipleDeclarationsInInit.java similarity index 100% rename from Tests/Je_1_For_MultipleDeclarationsInInit.java rename to Tests/A1tests/Je_1_For_MultipleDeclarationsInInit.java diff --git a/Tests/Je_1_For_MultipleUpdates.java b/Tests/A1tests/Je_1_For_MultipleUpdates.java similarity index 100% rename from Tests/Je_1_For_MultipleUpdates.java rename to Tests/A1tests/Je_1_For_MultipleUpdates.java diff --git a/Tests/Je_1_For_NotAStatementInUpdate.java b/Tests/A1tests/Je_1_For_NotAStatementInUpdate.java similarity index 100% rename from Tests/Je_1_For_NotAStatementInUpdate.java rename to Tests/A1tests/Je_1_For_NotAStatementInUpdate.java diff --git a/Tests/Je_1_For_PrimaryExpInInit.java b/Tests/A1tests/Je_1_For_PrimaryExpInInit.java similarity index 100% rename from Tests/Je_1_For_PrimaryExpInInit.java rename to Tests/A1tests/Je_1_For_PrimaryExpInInit.java diff --git a/Tests/Je_1_For_PrimaryExpInUpdate.java b/Tests/A1tests/Je_1_For_PrimaryExpInUpdate.java similarity index 100% rename from Tests/Je_1_For_PrimaryExpInUpdate.java rename to Tests/A1tests/Je_1_For_PrimaryExpInUpdate.java diff --git a/Tests/Je_1_For_StatementInInit.java b/Tests/A1tests/Je_1_For_StatementInInit.java similarity index 100% rename from Tests/Je_1_For_StatementInInit.java rename to Tests/A1tests/Je_1_For_StatementInInit.java diff --git a/Tests/Je_1_Formals_Final.java b/Tests/A1tests/Je_1_Formals_Final.java similarity index 100% rename from Tests/Je_1_Formals_Final.java rename to Tests/A1tests/Je_1_Formals_Final.java diff --git a/Tests/Je_1_Formals_Initializer_Constructor.java b/Tests/A1tests/Je_1_Formals_Initializer_Constructor.java similarity index 100% rename from Tests/Je_1_Formals_Initializer_Constructor.java rename to Tests/A1tests/Je_1_Formals_Initializer_Constructor.java diff --git a/Tests/Je_1_Formals_Initializer_Method.java b/Tests/A1tests/Je_1_Formals_Initializer_Method.java similarity index 100% rename from Tests/Je_1_Formals_Initializer_Method.java rename to Tests/A1tests/Je_1_Formals_Initializer_Method.java diff --git a/Tests/Je_1_Identifiers_Goto.java b/Tests/A1tests/Je_1_Identifiers_Goto.java similarity index 100% rename from Tests/Je_1_Identifiers_Goto.java rename to Tests/A1tests/Je_1_Identifiers_Goto.java diff --git a/Tests/Je_1_Identifiers_Private.java b/Tests/A1tests/Je_1_Identifiers_Private.java similarity index 100% rename from Tests/Je_1_Identifiers_Private.java rename to Tests/A1tests/Je_1_Identifiers_Private.java diff --git a/Tests/Je_1_Implements_NamedTypeArray.java b/Tests/A1tests/Je_1_Implements_NamedTypeArray.java similarity index 100% rename from Tests/Je_1_Implements_NamedTypeArray.java rename to Tests/A1tests/Je_1_Implements_NamedTypeArray.java diff --git a/Tests/Je_1_Implements_SimpleType.java b/Tests/A1tests/Je_1_Implements_SimpleType.java similarity index 100% rename from Tests/Je_1_Implements_SimpleType.java rename to Tests/A1tests/Je_1_Implements_SimpleType.java diff --git a/Tests/Je_1_Implements_SimpleTypeArray.java b/Tests/A1tests/Je_1_Implements_SimpleTypeArray.java similarity index 100% rename from Tests/Je_1_Implements_SimpleTypeArray.java rename to Tests/A1tests/Je_1_Implements_SimpleTypeArray.java diff --git a/Tests/Je_1_Implements_Value.java b/Tests/A1tests/Je_1_Implements_Value.java similarity index 100% rename from Tests/Je_1_Implements_Value.java rename to Tests/A1tests/Je_1_Implements_Value.java diff --git a/Tests/Je_1_IncDec_IncDecNotLvalue.java b/Tests/A1tests/Je_1_IncDec_IncDecNotLvalue.java similarity index 100% rename from Tests/Je_1_IncDec_IncDecNotLvalue.java rename to Tests/A1tests/Je_1_IncDec_IncDecNotLvalue.java diff --git a/Tests/Je_1_IncDec_Parenthesized.java b/Tests/A1tests/Je_1_IncDec_Parenthesized.java similarity index 100% rename from Tests/Je_1_IncDec_Parenthesized.java rename to Tests/A1tests/Je_1_IncDec_Parenthesized.java diff --git a/Tests/Je_1_InstanceInitializers.java b/Tests/A1tests/Je_1_InstanceInitializers.java similarity index 100% rename from Tests/Je_1_InstanceInitializers.java rename to Tests/A1tests/Je_1_InstanceInitializers.java diff --git a/Tests/Je_1_InstanceOf_Null.java b/Tests/A1tests/Je_1_InstanceOf_Null.java similarity index 100% rename from Tests/Je_1_InstanceOf_Null.java rename to Tests/A1tests/Je_1_InstanceOf_Null.java diff --git a/Tests/Je_1_InstanceOf_Primitive.java b/Tests/A1tests/Je_1_InstanceOf_Primitive.java similarity index 100% rename from Tests/Je_1_InstanceOf_Primitive.java rename to Tests/A1tests/Je_1_InstanceOf_Primitive.java diff --git a/Tests/Je_1_InstanceOf_Void.java b/Tests/A1tests/Je_1_InstanceOf_Void.java similarity index 100% rename from Tests/Je_1_InstanceOf_Void.java rename to Tests/A1tests/Je_1_InstanceOf_Void.java diff --git a/Tests/Je_1_IntRange_MinusTooBigInt.java b/Tests/A1tests/Je_1_IntRange_MinusTooBigInt.java similarity index 100% rename from Tests/Je_1_IntRange_MinusTooBigInt.java rename to Tests/A1tests/Je_1_IntRange_MinusTooBigInt.java diff --git a/Tests/Je_1_IntRange_PlusTooBigInt.java b/Tests/A1tests/Je_1_IntRange_PlusTooBigInt.java similarity index 100% rename from Tests/Je_1_IntRange_PlusTooBigInt.java rename to Tests/A1tests/Je_1_IntRange_PlusTooBigInt.java diff --git a/Tests/Je_1_IntRange_TooBigInt.java b/Tests/A1tests/Je_1_IntRange_TooBigInt.java similarity index 100% rename from Tests/Je_1_IntRange_TooBigInt.java rename to Tests/A1tests/Je_1_IntRange_TooBigInt.java diff --git a/Tests/Je_1_IntRange_TooBigIntNegated.java b/Tests/A1tests/Je_1_IntRange_TooBigIntNegated.java similarity index 100% rename from Tests/Je_1_IntRange_TooBigIntNegated.java rename to Tests/A1tests/Je_1_IntRange_TooBigIntNegated.java diff --git a/Tests/Je_1_IntRange_TooBigInt_InInitializer.java b/Tests/A1tests/Je_1_IntRange_TooBigInt_InInitializer.java similarity index 100% rename from Tests/Je_1_IntRange_TooBigInt_InInitializer.java rename to Tests/A1tests/Je_1_IntRange_TooBigInt_InInitializer.java diff --git a/Tests/Je_1_Interface_ConstructorAbstract.java b/Tests/A1tests/Je_1_Interface_ConstructorAbstract.java similarity index 100% rename from Tests/Je_1_Interface_ConstructorAbstract.java rename to Tests/A1tests/Je_1_Interface_ConstructorAbstract.java diff --git a/Tests/Je_1_Interface_ConstructorBody.java b/Tests/A1tests/Je_1_Interface_ConstructorBody.java similarity index 100% rename from Tests/Je_1_Interface_ConstructorBody.java rename to Tests/A1tests/Je_1_Interface_ConstructorBody.java diff --git a/Tests/Je_1_Interface_Field.java b/Tests/A1tests/Je_1_Interface_Field.java similarity index 100% rename from Tests/Je_1_Interface_Field.java rename to Tests/A1tests/Je_1_Interface_Field.java diff --git a/Tests/Je_1_Interface_FinalMethod.java b/Tests/A1tests/Je_1_Interface_FinalMethod.java similarity index 100% rename from Tests/Je_1_Interface_FinalMethod.java rename to Tests/A1tests/Je_1_Interface_FinalMethod.java diff --git a/Tests/Je_1_Interface_MethodBody.java b/Tests/A1tests/Je_1_Interface_MethodBody.java similarity index 100% rename from Tests/Je_1_Interface_MethodBody.java rename to Tests/A1tests/Je_1_Interface_MethodBody.java diff --git a/Tests/Je_1_Interface_NoBody.java b/Tests/A1tests/Je_1_Interface_NoBody.java similarity index 100% rename from Tests/Je_1_Interface_NoBody.java rename to Tests/A1tests/Je_1_Interface_NoBody.java diff --git a/Tests/Je_1_Interface_StaticMethod.java b/Tests/A1tests/Je_1_Interface_StaticMethod.java similarity index 100% rename from Tests/Je_1_Interface_StaticMethod.java rename to Tests/A1tests/Je_1_Interface_StaticMethod.java diff --git a/Tests/Je_1_Interface_WrongFileName.java b/Tests/A1tests/Je_1_Interface_WrongFileName.java similarity index 100% rename from Tests/Je_1_Interface_WrongFileName.java rename to Tests/A1tests/Je_1_Interface_WrongFileName.java diff --git a/Tests/Je_1_JoosTypes_Double.java b/Tests/A1tests/Je_1_JoosTypes_Double.java similarity index 100% rename from Tests/Je_1_JoosTypes_Double.java rename to Tests/A1tests/Je_1_JoosTypes_Double.java diff --git a/Tests/Je_1_JoosTypes_Float.java b/Tests/A1tests/Je_1_JoosTypes_Float.java similarity index 100% rename from Tests/Je_1_JoosTypes_Float.java rename to Tests/A1tests/Je_1_JoosTypes_Float.java diff --git a/Tests/Je_1_JoosTypes_Long.java b/Tests/A1tests/Je_1_JoosTypes_Long.java similarity index 100% rename from Tests/Je_1_JoosTypes_Long.java rename to Tests/A1tests/Je_1_JoosTypes_Long.java diff --git a/Tests/Je_1_LabeledStatements.java b/Tests/A1tests/Je_1_LabeledStatements.java similarity index 100% rename from Tests/Je_1_LabeledStatements.java rename to Tests/A1tests/Je_1_LabeledStatements.java diff --git a/Tests/Je_1_Literals_Class.java b/Tests/A1tests/Je_1_Literals_Class.java similarity index 100% rename from Tests/Je_1_Literals_Class.java rename to Tests/A1tests/Je_1_Literals_Class.java diff --git a/Tests/Je_1_Literals_Exponential.java b/Tests/A1tests/Je_1_Literals_Exponential.java similarity index 100% rename from Tests/Je_1_Literals_Exponential.java rename to Tests/A1tests/Je_1_Literals_Exponential.java diff --git a/Tests/Je_1_Literals_Float.java b/Tests/A1tests/Je_1_Literals_Float.java similarity index 100% rename from Tests/Je_1_Literals_Float.java rename to Tests/A1tests/Je_1_Literals_Float.java diff --git a/Tests/Je_1_Literals_Hex.java b/Tests/A1tests/Je_1_Literals_Hex.java similarity index 100% rename from Tests/Je_1_Literals_Hex.java rename to Tests/A1tests/Je_1_Literals_Hex.java diff --git a/Tests/Je_1_Literals_Long.java b/Tests/A1tests/Je_1_Literals_Long.java similarity index 100% rename from Tests/Je_1_Literals_Long.java rename to Tests/A1tests/Je_1_Literals_Long.java diff --git a/Tests/Je_1_Literals_Octal.java b/Tests/A1tests/Je_1_Literals_Octal.java similarity index 100% rename from Tests/Je_1_Literals_Octal.java rename to Tests/A1tests/Je_1_Literals_Octal.java diff --git a/Tests/Je_1_Locals_Final.java b/Tests/A1tests/Je_1_Locals_Final.java similarity index 100% rename from Tests/Je_1_Locals_Final.java rename to Tests/A1tests/Je_1_Locals_Final.java diff --git a/Tests/Je_1_Methods_MissingAccessModifier.java b/Tests/A1tests/Je_1_Methods_MissingAccessModifier.java similarity index 100% rename from Tests/Je_1_Methods_MissingAccessModifier.java rename to Tests/A1tests/Je_1_Methods_MissingAccessModifier.java diff --git a/Tests/Je_1_Methods_NonAbstractNoBody.java b/Tests/A1tests/Je_1_Methods_NonAbstractNoBody.java similarity index 100% rename from Tests/Je_1_Methods_NonAbstractNoBody.java rename to Tests/A1tests/Je_1_Methods_NonAbstractNoBody.java diff --git a/Tests/Je_1_Methods_StaticFinal.java b/Tests/A1tests/Je_1_Methods_StaticFinal.java similarity index 100% rename from Tests/Je_1_Methods_StaticFinal.java rename to Tests/A1tests/Je_1_Methods_StaticFinal.java diff --git a/Tests/Je_1_MultiArrayCreation_Assign_2.java b/Tests/A1tests/Je_1_MultiArrayCreation_Assign_2.java similarity index 100% rename from Tests/Je_1_MultiArrayCreation_Assign_2.java rename to Tests/A1tests/Je_1_MultiArrayCreation_Assign_2.java diff --git a/Tests/Je_1_MultiArrayCreation_MissingDimension_1.java b/Tests/A1tests/Je_1_MultiArrayCreation_MissingDimension_1.java similarity index 100% rename from Tests/Je_1_MultiArrayCreation_MissingDimension_1.java rename to Tests/A1tests/Je_1_MultiArrayCreation_MissingDimension_1.java diff --git a/Tests/Je_1_MultiArrayCreation_MissingDimension_2.java b/Tests/A1tests/Je_1_MultiArrayCreation_MissingDimension_2.java similarity index 100% rename from Tests/Je_1_MultiArrayCreation_MissingDimension_2.java rename to Tests/A1tests/Je_1_MultiArrayCreation_MissingDimension_2.java diff --git a/Tests/Je_1_MultiArrayCreation_MissingDimension_4.java b/Tests/A1tests/Je_1_MultiArrayCreation_MissingDimension_4.java similarity index 100% rename from Tests/Je_1_MultiArrayCreation_MissingDimension_4.java rename to Tests/A1tests/Je_1_MultiArrayCreation_MissingDimension_4.java diff --git a/Tests/Je_1_MultiArrayCreation_NoType.java b/Tests/A1tests/Je_1_MultiArrayCreation_NoType.java similarity index 100% rename from Tests/Je_1_MultiArrayCreation_NoType.java rename to Tests/A1tests/Je_1_MultiArrayCreation_NoType.java diff --git a/Tests/Je_1_MultiArrayTypes_Dimensions.java b/Tests/A1tests/Je_1_MultiArrayTypes_Dimensions.java similarity index 100% rename from Tests/Je_1_MultiArrayTypes_Dimensions.java rename to Tests/A1tests/Je_1_MultiArrayTypes_Dimensions.java diff --git a/Tests/Je_1_NegIntTooLow.java b/Tests/A1tests/Je_1_NegIntTooLow.java similarity index 100% rename from Tests/Je_1_NegIntTooLow.java rename to Tests/A1tests/Je_1_NegIntTooLow.java diff --git a/Tests/Je_1_NonJoosConstructs_AssignmentOperations_BitwiseAnd.java b/Tests/A1tests/Je_1_NonJoosConstructs_AssignmentOperations_BitwiseAnd.java similarity index 100% rename from Tests/Je_1_NonJoosConstructs_AssignmentOperations_BitwiseAnd.java rename to Tests/A1tests/Je_1_NonJoosConstructs_AssignmentOperations_BitwiseAnd.java diff --git a/Tests/Je_1_NonJoosConstructs_AssignmentOperations_BitwiseOr.java b/Tests/A1tests/Je_1_NonJoosConstructs_AssignmentOperations_BitwiseOr.java similarity index 100% rename from Tests/Je_1_NonJoosConstructs_AssignmentOperations_BitwiseOr.java rename to Tests/A1tests/Je_1_NonJoosConstructs_AssignmentOperations_BitwiseOr.java diff --git a/Tests/Je_1_NonJoosConstructs_AssignmentOperations_BitwiseXOR.java b/Tests/A1tests/Je_1_NonJoosConstructs_AssignmentOperations_BitwiseXOR.java similarity index 100% rename from Tests/Je_1_NonJoosConstructs_AssignmentOperations_BitwiseXOR.java rename to Tests/A1tests/Je_1_NonJoosConstructs_AssignmentOperations_BitwiseXOR.java diff --git a/Tests/Je_1_NonJoosConstructs_AssignmentOperations_Divide.java b/Tests/A1tests/Je_1_NonJoosConstructs_AssignmentOperations_Divide.java similarity index 100% rename from Tests/Je_1_NonJoosConstructs_AssignmentOperations_Divide.java rename to Tests/A1tests/Je_1_NonJoosConstructs_AssignmentOperations_Divide.java diff --git a/Tests/Je_1_NonJoosConstructs_AssignmentOperations_Minus.java b/Tests/A1tests/Je_1_NonJoosConstructs_AssignmentOperations_Minus.java similarity index 100% rename from Tests/Je_1_NonJoosConstructs_AssignmentOperations_Minus.java rename to Tests/A1tests/Je_1_NonJoosConstructs_AssignmentOperations_Minus.java diff --git a/Tests/Je_1_NonJoosConstructs_AssignmentOperations_Multiply.java b/Tests/A1tests/Je_1_NonJoosConstructs_AssignmentOperations_Multiply.java similarity index 100% rename from Tests/Je_1_NonJoosConstructs_AssignmentOperations_Multiply.java rename to Tests/A1tests/Je_1_NonJoosConstructs_AssignmentOperations_Multiply.java diff --git a/Tests/Je_1_NonJoosConstructs_AssignmentOperations_Plus.java b/Tests/A1tests/Je_1_NonJoosConstructs_AssignmentOperations_Plus.java similarity index 100% rename from Tests/Je_1_NonJoosConstructs_AssignmentOperations_Plus.java rename to Tests/A1tests/Je_1_NonJoosConstructs_AssignmentOperations_Plus.java diff --git a/Tests/Je_1_NonJoosConstructs_AssignmentOperations_Remainder.java b/Tests/A1tests/Je_1_NonJoosConstructs_AssignmentOperations_Remainder.java similarity index 100% rename from Tests/Je_1_NonJoosConstructs_AssignmentOperations_Remainder.java rename to Tests/A1tests/Je_1_NonJoosConstructs_AssignmentOperations_Remainder.java diff --git a/Tests/Je_1_NonJoosConstructs_AssignmentOperations_ShiftLeft.java b/Tests/A1tests/Je_1_NonJoosConstructs_AssignmentOperations_ShiftLeft.java similarity index 100% rename from Tests/Je_1_NonJoosConstructs_AssignmentOperations_ShiftLeft.java rename to Tests/A1tests/Je_1_NonJoosConstructs_AssignmentOperations_ShiftLeft.java diff --git a/Tests/Je_1_NonJoosConstructs_AssignmentOperations_SignShiftRight.java b/Tests/A1tests/Je_1_NonJoosConstructs_AssignmentOperations_SignShiftRight.java similarity index 100% rename from Tests/Je_1_NonJoosConstructs_AssignmentOperations_SignShiftRight.java rename to Tests/A1tests/Je_1_NonJoosConstructs_AssignmentOperations_SignShiftRight.java diff --git a/Tests/Je_1_NonJoosConstructs_AssignmentOperations_ZeroShiftRight.java b/Tests/A1tests/Je_1_NonJoosConstructs_AssignmentOperations_ZeroShiftRight.java similarity index 100% rename from Tests/Je_1_NonJoosConstructs_AssignmentOperations_ZeroShiftRight.java rename to Tests/A1tests/Je_1_NonJoosConstructs_AssignmentOperations_ZeroShiftRight.java diff --git a/Tests/Je_1_NonJoosConstructs_BitShift_Left.java b/Tests/A1tests/Je_1_NonJoosConstructs_BitShift_Left.java similarity index 100% rename from Tests/Je_1_NonJoosConstructs_BitShift_Left.java rename to Tests/A1tests/Je_1_NonJoosConstructs_BitShift_Left.java diff --git a/Tests/Je_1_NonJoosConstructs_BitShift_SignRight.java b/Tests/A1tests/Je_1_NonJoosConstructs_BitShift_SignRight.java similarity index 100% rename from Tests/Je_1_NonJoosConstructs_BitShift_SignRight.java rename to Tests/A1tests/Je_1_NonJoosConstructs_BitShift_SignRight.java diff --git a/Tests/Je_1_NonJoosConstructs_BitShift_ZeroRight.java b/Tests/A1tests/Je_1_NonJoosConstructs_BitShift_ZeroRight.java similarity index 100% rename from Tests/Je_1_NonJoosConstructs_BitShift_ZeroRight.java rename to Tests/A1tests/Je_1_NonJoosConstructs_BitShift_ZeroRight.java diff --git a/Tests/Je_1_NonJoosConstructs_Bitwise_Negation.java b/Tests/A1tests/Je_1_NonJoosConstructs_Bitwise_Negation.java similarity index 100% rename from Tests/Je_1_NonJoosConstructs_Bitwise_Negation.java rename to Tests/A1tests/Je_1_NonJoosConstructs_Bitwise_Negation.java diff --git a/Tests/Je_1_NonJoosConstructs_Break.java b/Tests/A1tests/Je_1_NonJoosConstructs_Break.java similarity index 100% rename from Tests/Je_1_NonJoosConstructs_Break.java rename to Tests/A1tests/Je_1_NonJoosConstructs_Break.java diff --git a/Tests/Je_1_NonJoosConstructs_Choice.java b/Tests/A1tests/Je_1_NonJoosConstructs_Choice.java similarity index 100% rename from Tests/Je_1_NonJoosConstructs_Choice.java rename to Tests/A1tests/Je_1_NonJoosConstructs_Choice.java diff --git a/Tests/Je_1_NonJoosConstructs_Continue.java b/Tests/A1tests/Je_1_NonJoosConstructs_Continue.java similarity index 100% rename from Tests/Je_1_NonJoosConstructs_Continue.java rename to Tests/A1tests/Je_1_NonJoosConstructs_Continue.java diff --git a/Tests/Je_1_NonJoosConstructs_DoWhile.java b/Tests/A1tests/Je_1_NonJoosConstructs_DoWhile.java similarity index 100% rename from Tests/Je_1_NonJoosConstructs_DoWhile.java rename to Tests/A1tests/Je_1_NonJoosConstructs_DoWhile.java diff --git a/Tests/Je_1_NonJoosConstructs_ExpressionSequence.java b/Tests/A1tests/Je_1_NonJoosConstructs_ExpressionSequence.java similarity index 100% rename from Tests/Je_1_NonJoosConstructs_ExpressionSequence.java rename to Tests/A1tests/Je_1_NonJoosConstructs_ExpressionSequence.java diff --git a/Tests/Je_1_NonJoosConstructs_MultipleTypesPrFile.java b/Tests/A1tests/Je_1_NonJoosConstructs_MultipleTypesPrFile.java similarity index 100% rename from Tests/Je_1_NonJoosConstructs_MultipleTypesPrFile.java rename to Tests/A1tests/Je_1_NonJoosConstructs_MultipleTypesPrFile.java diff --git a/Tests/Je_1_NonJoosConstructs_NestedTypes.java b/Tests/A1tests/Je_1_NonJoosConstructs_NestedTypes.java similarity index 100% rename from Tests/Je_1_NonJoosConstructs_NestedTypes.java rename to Tests/A1tests/Je_1_NonJoosConstructs_NestedTypes.java diff --git a/Tests/Je_1_NonJoosConstructs_PrivateFields.java b/Tests/A1tests/Je_1_NonJoosConstructs_PrivateFields.java similarity index 100% rename from Tests/Je_1_NonJoosConstructs_PrivateFields.java rename to Tests/A1tests/Je_1_NonJoosConstructs_PrivateFields.java diff --git a/Tests/Je_1_NonJoosConstructs_PrivateMethods.java b/Tests/A1tests/Je_1_NonJoosConstructs_PrivateMethods.java similarity index 100% rename from Tests/Je_1_NonJoosConstructs_PrivateMethods.java rename to Tests/A1tests/Je_1_NonJoosConstructs_PrivateMethods.java diff --git a/Tests/Je_1_NonJoosConstructs_StaticInitializers.java b/Tests/A1tests/Je_1_NonJoosConstructs_StaticInitializers.java similarity index 100% rename from Tests/Je_1_NonJoosConstructs_StaticInitializers.java rename to Tests/A1tests/Je_1_NonJoosConstructs_StaticInitializers.java diff --git a/Tests/Je_1_NonJoosConstructs_Strictftp.java b/Tests/A1tests/Je_1_NonJoosConstructs_Strictftp.java similarity index 100% rename from Tests/Je_1_NonJoosConstructs_Strictftp.java rename to Tests/A1tests/Je_1_NonJoosConstructs_Strictftp.java diff --git a/Tests/Je_1_NonJoosConstructs_SuperMethodCall.java b/Tests/A1tests/Je_1_NonJoosConstructs_SuperMethodCall.java similarity index 100% rename from Tests/Je_1_NonJoosConstructs_SuperMethodCall.java rename to Tests/A1tests/Je_1_NonJoosConstructs_SuperMethodCall.java diff --git a/Tests/Je_1_NonJoosConstructs_Switch.java b/Tests/A1tests/Je_1_NonJoosConstructs_Switch.java similarity index 100% rename from Tests/Je_1_NonJoosConstructs_Switch.java rename to Tests/A1tests/Je_1_NonJoosConstructs_Switch.java diff --git a/Tests/Je_1_NonJoosConstructs_Synchronized.java b/Tests/A1tests/Je_1_NonJoosConstructs_Synchronized.java similarity index 100% rename from Tests/Je_1_NonJoosConstructs_Synchronized.java rename to Tests/A1tests/Je_1_NonJoosConstructs_Synchronized.java diff --git a/Tests/Je_1_NonJoosConstructs_SynchronizedStatement.java b/Tests/A1tests/Je_1_NonJoosConstructs_SynchronizedStatement.java similarity index 100% rename from Tests/Je_1_NonJoosConstructs_SynchronizedStatement.java rename to Tests/A1tests/Je_1_NonJoosConstructs_SynchronizedStatement.java diff --git a/Tests/Je_1_NonJoosConstructs_Transient.java b/Tests/A1tests/Je_1_NonJoosConstructs_Transient.java similarity index 100% rename from Tests/Je_1_NonJoosConstructs_Transient.java rename to Tests/A1tests/Je_1_NonJoosConstructs_Transient.java diff --git a/Tests/Je_1_NonJoosConstructs_UnaryPlus.java b/Tests/A1tests/Je_1_NonJoosConstructs_UnaryPlus.java similarity index 100% rename from Tests/Je_1_NonJoosConstructs_UnaryPlus.java rename to Tests/A1tests/Je_1_NonJoosConstructs_UnaryPlus.java diff --git a/Tests/Je_1_NonJoosConstructs_Unicode.java b/Tests/A1tests/Je_1_NonJoosConstructs_Unicode.java similarity index 100% rename from Tests/Je_1_NonJoosConstructs_Unicode.java rename to Tests/A1tests/Je_1_NonJoosConstructs_Unicode.java diff --git a/Tests/Je_1_NonJoosConstructs_Volatile.java b/Tests/A1tests/Je_1_NonJoosConstructs_Volatile.java similarity index 100% rename from Tests/Je_1_NonJoosConstructs_Volatile.java rename to Tests/A1tests/Je_1_NonJoosConstructs_Volatile.java diff --git a/Tests/Je_1_PackagePrivate_Class.java b/Tests/A1tests/Je_1_PackagePrivate_Class.java similarity index 100% rename from Tests/Je_1_PackagePrivate_Class.java rename to Tests/A1tests/Je_1_PackagePrivate_Class.java diff --git a/Tests/Je_1_PackagePrivate_Field.java b/Tests/A1tests/Je_1_PackagePrivate_Field.java similarity index 100% rename from Tests/Je_1_PackagePrivate_Field.java rename to Tests/A1tests/Je_1_PackagePrivate_Field.java diff --git a/Tests/Je_1_PackagePrivate_Method.java b/Tests/A1tests/Je_1_PackagePrivate_Method.java similarity index 100% rename from Tests/Je_1_PackagePrivate_Method.java rename to Tests/A1tests/Je_1_PackagePrivate_Method.java diff --git a/Tests/Je_1_SuperThis_SuperAfterBlock.java b/Tests/A1tests/Je_1_SuperThis_SuperAfterBlock.java similarity index 100% rename from Tests/Je_1_SuperThis_SuperAfterBlock.java rename to Tests/A1tests/Je_1_SuperThis_SuperAfterBlock.java diff --git a/Tests/Je_1_SuperThis_SuperAfterStatement.java b/Tests/A1tests/Je_1_SuperThis_SuperAfterStatement.java similarity index 100% rename from Tests/Je_1_SuperThis_SuperAfterStatement.java rename to Tests/A1tests/Je_1_SuperThis_SuperAfterStatement.java diff --git a/Tests/Je_1_SuperThis_SuperInBlock.java b/Tests/A1tests/Je_1_SuperThis_SuperInBlock.java similarity index 100% rename from Tests/Je_1_SuperThis_SuperInBlock.java rename to Tests/A1tests/Je_1_SuperThis_SuperInBlock.java diff --git a/Tests/Je_1_SuperThis_SuperInMethod.java b/Tests/A1tests/Je_1_SuperThis_SuperInMethod.java similarity index 100% rename from Tests/Je_1_SuperThis_SuperInMethod.java rename to Tests/A1tests/Je_1_SuperThis_SuperInMethod.java diff --git a/Tests/Je_1_SuperThis_SuperThis.java b/Tests/A1tests/Je_1_SuperThis_SuperThis.java similarity index 100% rename from Tests/Je_1_SuperThis_SuperThis.java rename to Tests/A1tests/Je_1_SuperThis_SuperThis.java diff --git a/Tests/Je_1_SuperThis_ThisAfterStatement.java b/Tests/A1tests/Je_1_SuperThis_ThisAfterStatement.java similarity index 100% rename from Tests/Je_1_SuperThis_ThisAfterStatement.java rename to Tests/A1tests/Je_1_SuperThis_ThisAfterStatement.java diff --git a/Tests/Je_1_SuperThis_ThisInMethod.java b/Tests/A1tests/Je_1_SuperThis_ThisInMethod.java similarity index 100% rename from Tests/Je_1_SuperThis_ThisInMethod.java rename to Tests/A1tests/Je_1_SuperThis_ThisInMethod.java diff --git a/Tests/Je_1_SuperThis_TwoSuperCalls.java b/Tests/A1tests/Je_1_SuperThis_TwoSuperCalls.java similarity index 100% rename from Tests/Je_1_SuperThis_TwoSuperCalls.java rename to Tests/A1tests/Je_1_SuperThis_TwoSuperCalls.java diff --git a/Tests/Je_1_Throw_NotExpression.java b/Tests/A1tests/Je_1_Throw_NotExpression.java similarity index 100% rename from Tests/Je_1_Throw_NotExpression.java rename to Tests/A1tests/Je_1_Throw_NotExpression.java diff --git a/Tests/Je_1_Throws_Array.java b/Tests/A1tests/Je_1_Throws_Array.java similarity index 100% rename from Tests/Je_1_Throws_Array.java rename to Tests/A1tests/Je_1_Throws_Array.java diff --git a/Tests/Je_1_Throws_SimpleType.java b/Tests/A1tests/Je_1_Throws_SimpleType.java similarity index 100% rename from Tests/Je_1_Throws_SimpleType.java rename to Tests/A1tests/Je_1_Throws_SimpleType.java diff --git a/Tests/Je_1_Throws_Void.java b/Tests/A1tests/Je_1_Throws_Void.java similarity index 100% rename from Tests/Je_1_Throws_Void.java rename to Tests/A1tests/Je_1_Throws_Void.java diff --git a/Tests/Je_1_VoidType_ArrayCreation.java b/Tests/A1tests/Je_1_VoidType_ArrayCreation.java similarity index 100% rename from Tests/Je_1_VoidType_ArrayCreation.java rename to Tests/A1tests/Je_1_VoidType_ArrayCreation.java diff --git a/Tests/Je_1_VoidType_ArrayDeclaration.java b/Tests/A1tests/Je_1_VoidType_ArrayDeclaration.java similarity index 100% rename from Tests/Je_1_VoidType_ArrayDeclaration.java rename to Tests/A1tests/Je_1_VoidType_ArrayDeclaration.java diff --git a/Tests/Je_1_VoidType_Cast.java b/Tests/A1tests/Je_1_VoidType_Cast.java similarity index 100% rename from Tests/Je_1_VoidType_Cast.java rename to Tests/A1tests/Je_1_VoidType_Cast.java diff --git a/Tests/Je_1_VoidType_Field.java b/Tests/A1tests/Je_1_VoidType_Field.java similarity index 100% rename from Tests/Je_1_VoidType_Field.java rename to Tests/A1tests/Je_1_VoidType_Field.java diff --git a/Tests/Je_1_VoidType_Formals.java b/Tests/A1tests/Je_1_VoidType_Formals.java similarity index 100% rename from Tests/Je_1_VoidType_Formals.java rename to Tests/A1tests/Je_1_VoidType_Formals.java diff --git a/Tests/Je_1_VoidType_Local.java b/Tests/A1tests/Je_1_VoidType_Local.java similarity index 100% rename from Tests/Je_1_VoidType_Local.java rename to Tests/A1tests/Je_1_VoidType_Local.java diff --git a/Tests/Je_1_VoidType_VoidMethod.java b/Tests/A1tests/Je_1_VoidType_VoidMethod.java similarity index 100% rename from Tests/Je_1_VoidType_VoidMethod.java rename to Tests/A1tests/Je_1_VoidType_VoidMethod.java diff --git a/Tests/Je_6_Assignable_Instanceof_SimpleTypeOfSimpleType.java b/Tests/A1tests/Je_6_Assignable_Instanceof_SimpleTypeOfSimpleType.java similarity index 100% rename from Tests/Je_6_Assignable_Instanceof_SimpleTypeOfSimpleType.java rename to Tests/A1tests/Je_6_Assignable_Instanceof_SimpleTypeOfSimpleType.java diff --git a/Tests/Je_6_InstanceOf_Primitive_1.java b/Tests/A1tests/Je_6_InstanceOf_Primitive_1.java similarity index 100% rename from Tests/Je_6_InstanceOf_Primitive_1.java rename to Tests/A1tests/Je_6_InstanceOf_Primitive_1.java diff --git a/Tests/Je_6_InstanceOf_Primitive_2.java b/Tests/A1tests/Je_6_InstanceOf_Primitive_2.java similarity index 100% rename from Tests/Je_6_InstanceOf_Primitive_2.java rename to Tests/A1tests/Je_6_InstanceOf_Primitive_2.java diff --git a/Tests/Je_Native.java b/Tests/A1tests/Je_Native.java similarity index 100% rename from Tests/Je_Native.java rename to Tests/A1tests/Je_Native.java diff --git a/Tests/Je_Throws.java b/Tests/A1tests/Je_Throws.java similarity index 100% rename from Tests/Je_Throws.java rename to Tests/A1tests/Je_Throws.java diff --git a/Tests/add2num.joos b/Tests/A1tests/add2num.joos similarity index 100% rename from Tests/add2num.joos rename to Tests/A1tests/add2num.joos diff --git a/Tests/comments.joos b/Tests/A1tests/comments.joos similarity index 100% rename from Tests/comments.joos rename to Tests/A1tests/comments.joos diff --git a/Tests/compoundName.joos b/Tests/A1tests/compoundName.joos similarity index 100% rename from Tests/compoundName.joos rename to Tests/A1tests/compoundName.joos diff --git a/Tests/empty.joos b/Tests/A1tests/empty.joos similarity index 100% rename from Tests/empty.joos rename to Tests/A1tests/empty.joos diff --git a/Tests/errorComments.joos b/Tests/A1tests/errorComments.joos similarity index 100% rename from Tests/errorComments.joos rename to Tests/A1tests/errorComments.joos diff --git a/Tests/errorNumber.joos b/Tests/A1tests/errorNumber.joos similarity index 100% rename from Tests/errorNumber.joos rename to Tests/A1tests/errorNumber.joos diff --git a/Tests/errorOperatorsInJavaNotJoos.joos b/Tests/A1tests/errorOperatorsInJavaNotJoos.joos similarity index 100% rename from Tests/errorOperatorsInJavaNotJoos.joos rename to Tests/A1tests/errorOperatorsInJavaNotJoos.joos diff --git a/Tests/interface.joos b/Tests/A1tests/interface.joos similarity index 100% rename from Tests/interface.joos rename to Tests/A1tests/interface.joos diff --git a/Tests/literals.joos b/Tests/A1tests/literals.joos similarity index 100% rename from Tests/literals.joos rename to Tests/A1tests/literals.joos diff --git a/Tests/notASCII.joos b/Tests/A1tests/notASCII.joos similarity index 100% rename from Tests/notASCII.joos rename to Tests/A1tests/notASCII.joos diff --git a/Tests/test.joos b/Tests/A1tests/test.joos similarity index 100% rename from Tests/test.joos rename to Tests/A1tests/test.joos diff --git a/Tests/test2.joos b/Tests/A1tests/test2.joos similarity index 100% rename from Tests/test2.joos rename to Tests/A1tests/test2.joos diff --git a/Tests/unusedOperators.joos b/Tests/A1tests/unusedOperators.joos similarity index 100% rename from Tests/unusedOperators.joos rename to Tests/A1tests/unusedOperators.joos diff --git a/Tests/wrongCompoundName.joos b/Tests/A1tests/wrongCompoundName.joos similarity index 100% rename from Tests/wrongCompoundName.joos rename to Tests/A1tests/wrongCompoundName.joos diff --git a/Tests/A2/J1_1_Cast_NamedTypeAsVariable.java b/Tests/A2/J1_1_Cast_NamedTypeAsVariable.java new file mode 100644 index 0000000000000000000000000000000000000000..3aec1e3c59dcb5fa5ad4792ab53ba29bfc0d6e59 --- /dev/null +++ b/Tests/A2/J1_1_Cast_NamedTypeAsVariable.java @@ -0,0 +1,16 @@ +// ENVIRONMENTS +/** + * Environment: + * - Variable java.lang.Object not declared + */ +public class J1_1_Cast_NamedTypeAsVariable { + + public J1_1_Cast_NamedTypeAsVariable() {} + + public static int test() { + int Object = 165; + int x = (Object)-42; + return x; + } + +} diff --git a/Tests/A2/J1_2_Fields_Case.java b/Tests/A2/J1_2_Fields_Case.java new file mode 100644 index 0000000000000000000000000000000000000000..7e342ae5713a369b134050032a15c0d8417d0992 --- /dev/null +++ b/Tests/A2/J1_2_Fields_Case.java @@ -0,0 +1,18 @@ +// ENVIRONMENTS +/** + * - Environments + * Check that no two fields in the same class have the same name. + */ +public class J1_2_Fields_Case { + + public Object foo; + + public Object Foo; + + public J1_2_Fields_Case () {} + + public static int test() { + return 123; + } + +} diff --git a/Tests/A2/J1_2_Locals_Overlapping_AfterBlock.java b/Tests/A2/J1_2_Locals_Overlapping_AfterBlock.java new file mode 100644 index 0000000000000000000000000000000000000000..94a77ae7f9f6a168bc5e59d6b2ce95a2bc8ec963 --- /dev/null +++ b/Tests/A2/J1_2_Locals_Overlapping_AfterBlock.java @@ -0,0 +1,13 @@ +//ENVIRONMENTS + +public class J1_2_Locals_Overlapping_AfterBlock { + public J1_2_Locals_Overlapping_AfterBlock() {} + + public static int test() { + { + int a = 0; + } + int a = 123; + return a; + } +} diff --git a/Tests/A2/J1_3_ImportOnDemand_DefaultImportInPresenceOfOtherImport/Main.java b/Tests/A2/J1_3_ImportOnDemand_DefaultImportInPresenceOfOtherImport/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..5fba3a6a25d330752668ddacb6a100f8e9d303cf --- /dev/null +++ b/Tests/A2/J1_3_ImportOnDemand_DefaultImportInPresenceOfOtherImport/Main.java @@ -0,0 +1,17 @@ +// TYPE_LINKING +/** + * TypeLinking: + * - All classes implicitly import java.lang.*, even in the presence + * of other import-on-demand declarations. + */ +import java.lang.ref.*; + +public class Main{ + + public Main(){} + + public static int test(){ + return new Integer(123).intValue(); + } + +} diff --git a/Tests/A2/J1_3_ImportOnDemand_DefaultImportInPresenceOfOtherImport/java/lang/ref/Foo.java b/Tests/A2/J1_3_ImportOnDemand_DefaultImportInPresenceOfOtherImport/java/lang/ref/Foo.java new file mode 100644 index 0000000000000000000000000000000000000000..278d32b6cb7b073693b32d206fb3091ba24eb22c --- /dev/null +++ b/Tests/A2/J1_3_ImportOnDemand_DefaultImportInPresenceOfOtherImport/java/lang/ref/Foo.java @@ -0,0 +1,5 @@ +package java.lang.ref; +public class Foo { + public Foo() { + } +} diff --git a/Tests/A2/J1_3_ImportOnDemand_ProgramDefinedPackage/Main.java b/Tests/A2/J1_3_ImportOnDemand_ProgramDefinedPackage/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..cd8c8c204ae35981671cd46df22e80a2dd49bf44 --- /dev/null +++ b/Tests/A2/J1_3_ImportOnDemand_ProgramDefinedPackage/Main.java @@ -0,0 +1,14 @@ +// TYPE_LINKING +/* TypeLinking: + * Check that all import-on-demand declarations refer to existing packages. + */ + +import test.*; + +public class Main{ + public Main(){} + + public static int test(){ + return A.test(); + } +} diff --git a/Tests/A2/J1_3_ImportOnDemand_ProgramDefinedPackage/test/A.java b/Tests/A2/J1_3_ImportOnDemand_ProgramDefinedPackage/test/A.java new file mode 100644 index 0000000000000000000000000000000000000000..a95a553753926fc14484d6afd3d14e938e0d0aff --- /dev/null +++ b/Tests/A2/J1_3_ImportOnDemand_ProgramDefinedPackage/test/A.java @@ -0,0 +1,9 @@ +package test; + +public class A{ + public A(){} + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/J1_3_InfixResolvesToType/Main.java b/Tests/A2/J1_3_InfixResolvesToType/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..456862aa3ecb8949185b95fc686585390b7286f8 --- /dev/null +++ b/Tests/A2/J1_3_InfixResolvesToType/Main.java @@ -0,0 +1,13 @@ +// TYPE_LINKING +/* TypeLinking: + * Check that no prefixes (consisting of whole identifiers) of fully qualified + * types themselves resolve to types. + */ +public class Main { + public Main() {} + + public static int test() { + foo.String.bar.foo s = new foo.String.bar.foo(); + return 123; + } +} diff --git a/Tests/A2/J1_3_InfixResolvesToType/foo/String/bar/foo.java b/Tests/A2/J1_3_InfixResolvesToType/foo/String/bar/foo.java new file mode 100644 index 0000000000000000000000000000000000000000..6e9301d1a1412ff48d4823fed3ac296b80fe9b74 --- /dev/null +++ b/Tests/A2/J1_3_InfixResolvesToType/foo/String/bar/foo.java @@ -0,0 +1,5 @@ +package foo.String.bar; + +public class foo { + public foo() {} +} diff --git a/Tests/A2/J1_3_OnDemandImport_NonAmbiguous_Default/List.java b/Tests/A2/J1_3_OnDemandImport_NonAmbiguous_Default/List.java new file mode 100644 index 0000000000000000000000000000000000000000..5b6c12a6dcaf4964c5330f7f7c9f715043fff591 --- /dev/null +++ b/Tests/A2/J1_3_OnDemandImport_NonAmbiguous_Default/List.java @@ -0,0 +1,7 @@ +public class List { + public List() {} + + public int method() { + return 123; + } +} diff --git a/Tests/A2/J1_3_OnDemandImport_NonAmbiguous_Default/Main.java b/Tests/A2/J1_3_OnDemandImport_NonAmbiguous_Default/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..9b58f38c0cb5ba3bbb412c132da6fbd86d1b924d --- /dev/null +++ b/Tests/A2/J1_3_OnDemandImport_NonAmbiguous_Default/Main.java @@ -0,0 +1,17 @@ +//TYPE_LINKING + +/** + * Same package precedes on-demand import in type-linking => + * On-demand imports are not ambiguous. + */ +import java.util.*; +import java.awt.*; + +public class Main { + public Main() {} + + public static int test() { + List list = new List(); + return list.method(); + } +} diff --git a/Tests/A2/J1_3_OnDemandImport_NonAmbiguous_Default/java/awt/List.java b/Tests/A2/J1_3_OnDemandImport_NonAmbiguous_Default/java/awt/List.java new file mode 100644 index 0000000000000000000000000000000000000000..7e253f6d15713cd32c9679d1d1e016d03a941c0d --- /dev/null +++ b/Tests/A2/J1_3_OnDemandImport_NonAmbiguous_Default/java/awt/List.java @@ -0,0 +1,5 @@ +package java.awt; +public class List { + public List() { + } +} diff --git a/Tests/A2/J1_3_OnDemandImport_NonAmbiguous_SamePackage/Main.java b/Tests/A2/J1_3_OnDemandImport_NonAmbiguous_SamePackage/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..b311c0d5959d02a815cd12b9116fcff1d969f43a --- /dev/null +++ b/Tests/A2/J1_3_OnDemandImport_NonAmbiguous_SamePackage/Main.java @@ -0,0 +1,16 @@ +//TYPE_LINKING + +/** + * Same package precedes on-demand import in type-linking => + * On-demand imports are not ambiguous. + */ +import foo.Foo; + +public class Main { + public Main() {} + + public static int test() { + Foo foo = new Foo(); + return foo.method(); + } +} diff --git a/Tests/A2/J1_3_OnDemandImport_NonAmbiguous_SamePackage/foo/Foo.java b/Tests/A2/J1_3_OnDemandImport_NonAmbiguous_SamePackage/foo/Foo.java new file mode 100644 index 0000000000000000000000000000000000000000..f6dad5f3f14626d370162afcfc4a601648e8b4af --- /dev/null +++ b/Tests/A2/J1_3_OnDemandImport_NonAmbiguous_SamePackage/foo/Foo.java @@ -0,0 +1,13 @@ +package foo; + +import java.util.*; +import java.awt.*; + +public class Foo { + public Foo() {} + + public int method() { + List list = new List(); + return list.method(); + } +} diff --git a/Tests/A2/J1_3_OnDemandImport_NonAmbiguous_SamePackage/foo/List.java b/Tests/A2/J1_3_OnDemandImport_NonAmbiguous_SamePackage/foo/List.java new file mode 100644 index 0000000000000000000000000000000000000000..ecc00e17bbfc783890ae7bb404d07dcb5a80f972 --- /dev/null +++ b/Tests/A2/J1_3_OnDemandImport_NonAmbiguous_SamePackage/foo/List.java @@ -0,0 +1,9 @@ +package foo; + +public class List { + public List() {} + + public int method() { + return 123; + } +} diff --git a/Tests/A2/J1_3_OnDemandImport_NonAmbiguous_SamePackage/java/awt/List.java b/Tests/A2/J1_3_OnDemandImport_NonAmbiguous_SamePackage/java/awt/List.java new file mode 100644 index 0000000000000000000000000000000000000000..7e253f6d15713cd32c9679d1d1e016d03a941c0d --- /dev/null +++ b/Tests/A2/J1_3_OnDemandImport_NonAmbiguous_SamePackage/java/awt/List.java @@ -0,0 +1,5 @@ +package java.awt; +public class List { + public List() { + } +} diff --git a/Tests/A2/J1_3_PackageClashWithType_Linked_Mutated/Main.java b/Tests/A2/J1_3_PackageClashWithType_Linked_Mutated/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..1befe4b8425c76cdcd33a2830955e10da51b942b --- /dev/null +++ b/Tests/A2/J1_3_PackageClashWithType_Linked_Mutated/Main.java @@ -0,0 +1,19 @@ +//TYPE_LINKING + +/** + * TypeLinking: + * Check that no package names or prefixes hereof (consisting of whole + * identifiers) of declared packages, single-type-import declarations + * or used import-on-demand declarations resolve to qualified types, + * i.e. types not in the default package. + */ +import javax.swing.tree.*; + +public class Main { + public Main() {} + + public static int test() { + TreeNode node = null; + return 123; + } +} diff --git a/Tests/A2/J1_3_PackageClashWithType_Linked_Mutated/javax/swing/tree/TreeNode.java b/Tests/A2/J1_3_PackageClashWithType_Linked_Mutated/javax/swing/tree/TreeNode.java new file mode 100644 index 0000000000000000000000000000000000000000..6dbb09423d9f3f67e926e13787b61077e474c5d0 --- /dev/null +++ b/Tests/A2/J1_3_PackageClashWithType_Linked_Mutated/javax/swing/tree/TreeNode.java @@ -0,0 +1,5 @@ +package javax.swing.tree; +public class TreeNode { + public TreeNode() { + } +} diff --git a/Tests/A2/J1_3_PackageClashWithType_Linked_Mutated/javax/swing/treejava.java b/Tests/A2/J1_3_PackageClashWithType_Linked_Mutated/javax/swing/treejava.java new file mode 100644 index 0000000000000000000000000000000000000000..73b393d364722ef3081211b83fe00a598a780fc6 --- /dev/null +++ b/Tests/A2/J1_3_PackageClashWithType_Linked_Mutated/javax/swing/treejava.java @@ -0,0 +1,5 @@ +package javax.swing; + +public class treejava { + public treejava() {} +} diff --git a/Tests/A2/J1_3_PackageDecl_MultipleFilesInSamePackage/A.java b/Tests/A2/J1_3_PackageDecl_MultipleFilesInSamePackage/A.java new file mode 100644 index 0000000000000000000000000000000000000000..e021885818faabada084be1a9acc23af788f8dc9 --- /dev/null +++ b/Tests/A2/J1_3_PackageDecl_MultipleFilesInSamePackage/A.java @@ -0,0 +1,10 @@ +package test; + +public class A{ + + public A(){} + + public static int foo(){ + return test.B.foo(); + } +} diff --git a/Tests/A2/J1_3_PackageDecl_MultipleFilesInSamePackage/B.java b/Tests/A2/J1_3_PackageDecl_MultipleFilesInSamePackage/B.java new file mode 100644 index 0000000000000000000000000000000000000000..6dd7e2a5735a0a758ca8e046ef682d4d9140e726 --- /dev/null +++ b/Tests/A2/J1_3_PackageDecl_MultipleFilesInSamePackage/B.java @@ -0,0 +1,10 @@ +package test; + +public class B{ + + public B(){} + + public static int foo(){ + return 123; + } +} diff --git a/Tests/A2/J1_3_PackageDecl_MultipleFilesInSamePackage/Main.java b/Tests/A2/J1_3_PackageDecl_MultipleFilesInSamePackage/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..de92a41b8bfc39e3e2a627688af2831b9fa78c10 --- /dev/null +++ b/Tests/A2/J1_3_PackageDecl_MultipleFilesInSamePackage/Main.java @@ -0,0 +1,15 @@ +// TYPE_LINKING +/** + * TypeLinking: + * - This testcase tests whether it is allowed to declare two + * different classes in the same package. + **/ +public class Main{ + + public Main(){} + + public static int test(){ + return test.A.foo(); + } + +} diff --git a/Tests/A2/J1_3_PackageDecl_SamePackageAndClassName/A/A.java b/Tests/A2/J1_3_PackageDecl_SamePackageAndClassName/A/A.java new file mode 100644 index 0000000000000000000000000000000000000000..cb5cf002b52a293b1d7385b7c1b97ae4c457af88 --- /dev/null +++ b/Tests/A2/J1_3_PackageDecl_SamePackageAndClassName/A/A.java @@ -0,0 +1,7 @@ +package A; + +public class A{ + + public A(){} + +} diff --git a/Tests/A2/J1_3_PackageDecl_SamePackageAndClassName/Main.java b/Tests/A2/J1_3_PackageDecl_SamePackageAndClassName/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..41ca2774523f1145d4d6a04efb9703246c6b0cc5 --- /dev/null +++ b/Tests/A2/J1_3_PackageDecl_SamePackageAndClassName/Main.java @@ -0,0 +1,14 @@ +// TYPE_LINKING +/** + * TypeLinking: + * - Tests whether it is allowed to declare a class with the same name + * as its package. + */ +public class Main{ + + public Main(){} + + public static int test(){ + return 123; + } +} diff --git a/Tests/A2/J1_3_PackageExists_AsPrefix_External/Main.java b/Tests/A2/J1_3_PackageExists_AsPrefix_External/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..1d3ac6dfe87c81330747c1a5e3641a707c59aac7 --- /dev/null +++ b/Tests/A2/J1_3_PackageExists_AsPrefix_External/Main.java @@ -0,0 +1,13 @@ +//TYPE_LINKING +/** + * The package java exists because of for instance java.lang.Object. + */ +import java.*; + +public class Main { + public Main() {} + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/J1_3_PackageExists_AsPrefix_Internal/Main.java b/Tests/A2/J1_3_PackageExists_AsPrefix_Internal/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..93b0d631354fd95748db57f92d2018c52bae2722 --- /dev/null +++ b/Tests/A2/J1_3_PackageExists_AsPrefix_Internal/Main.java @@ -0,0 +1,13 @@ +//TYPE_LINKING +/** + * The package foo exists because of the class foo.bar.Baz. + */ +import foo.*; + +public class Main { + public Main() {} + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/J1_3_PackageExists_AsPrefix_Internal/foo/bar/Baz.java b/Tests/A2/J1_3_PackageExists_AsPrefix_Internal/foo/bar/Baz.java new file mode 100644 index 0000000000000000000000000000000000000000..98299613ee0079167686a0979dc2c354c385ce9e --- /dev/null +++ b/Tests/A2/J1_3_PackageExists_AsPrefix_Internal/foo/bar/Baz.java @@ -0,0 +1,5 @@ +package foo.bar; + +public class Baz { + public Baz() {} +} diff --git a/Tests/A2/J1_3_Resolve_LinkToCorrectPackage/Main.java b/Tests/A2/J1_3_Resolve_LinkToCorrectPackage/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..4eb178bf35424177bf4872833695fb1e8c5675c1 --- /dev/null +++ b/Tests/A2/J1_3_Resolve_LinkToCorrectPackage/Main.java @@ -0,0 +1,21 @@ +// TYPE_LINKING +/** + * TypeLinking + * - Tests whether a simple typename is linked to the correct type in + * the same package, in the case where other packages are also defined + * within the program. + * Specifically, the type name Bar in Test.Foo should link to Test.Bar. + */ +public class Main{ + + public Main(){} + + public static int test(){ + return Test.Foo.test(); + } + + public static void main(String[] args){ + System.out.println(Main.test()); + } + +} diff --git a/Tests/A2/J1_3_Resolve_LinkToCorrectPackage/Test/Bar.java b/Tests/A2/J1_3_Resolve_LinkToCorrectPackage/Test/Bar.java new file mode 100644 index 0000000000000000000000000000000000000000..a64ae1c3aa978a3650b4f215eeef5029cf2266e6 --- /dev/null +++ b/Tests/A2/J1_3_Resolve_LinkToCorrectPackage/Test/Bar.java @@ -0,0 +1,11 @@ +package Test; + +public class Bar{ + + public Bar(){} + + public static int test(){ + return 123; + } + +} diff --git a/Tests/A2/J1_3_Resolve_LinkToCorrectPackage/Test/Foo.java b/Tests/A2/J1_3_Resolve_LinkToCorrectPackage/Test/Foo.java new file mode 100644 index 0000000000000000000000000000000000000000..fe87a54ef9f8a68964dc369f571538414180cf43 --- /dev/null +++ b/Tests/A2/J1_3_Resolve_LinkToCorrectPackage/Test/Foo.java @@ -0,0 +1,11 @@ +package Test; + +public class Foo{ + + public Foo(){} + + public static int test(){ + return Bar.test(); + } + +} diff --git a/Tests/A2/J1_3_Resolve_LinkToCorrectPackage/Test2/Zoo.java b/Tests/A2/J1_3_Resolve_LinkToCorrectPackage/Test2/Zoo.java new file mode 100644 index 0000000000000000000000000000000000000000..034ef40b5bd2ac6098f9c0831b8dcd650988ea8f --- /dev/null +++ b/Tests/A2/J1_3_Resolve_LinkToCorrectPackage/Test2/Zoo.java @@ -0,0 +1,11 @@ +package Test2; + +public class Zoo{ + + public Zoo(){} + + public static int test(){ + return 0; + } + +} diff --git a/Tests/A2/J1_3_Resolve_PackagePrefixMatchClassName/Main.java b/Tests/A2/J1_3_Resolve_PackagePrefixMatchClassName/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..83ace47e785e60bfde073dfbcc085ffb2de0d0bf --- /dev/null +++ b/Tests/A2/J1_3_Resolve_PackagePrefixMatchClassName/Main.java @@ -0,0 +1,10 @@ +// TYPE_LINKING +/* TypeLinking: + */ +public class Main { + public Main() {} + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/J1_3_Resolve_PackagePrefixMatchClassName/Main/B/A.java b/Tests/A2/J1_3_Resolve_PackagePrefixMatchClassName/Main/B/A.java new file mode 100644 index 0000000000000000000000000000000000000000..a6c0a310470f91fbbbf5d08a346793543463a431 --- /dev/null +++ b/Tests/A2/J1_3_Resolve_PackagePrefixMatchClassName/Main/B/A.java @@ -0,0 +1,11 @@ +/* TypeLinking: + */ +package Main.B; + +public class A { + public A() {} + + public static Main.B.A getInstance() { + return new Main.B.A(); + } +} diff --git a/Tests/A2/J1_3_Resolve_SamePackage_External/Main.java b/Tests/A2/J1_3_Resolve_SamePackage_External/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..baf7440280ad256f2a2da218810976b4de44de32 --- /dev/null +++ b/Tests/A2/J1_3_Resolve_SamePackage_External/Main.java @@ -0,0 +1,9 @@ +//TYPE_LINKING + +public class Main { + public Main() {} + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/J1_3_Resolve_SamePackage_External/javax/swing/Foo.java b/Tests/A2/J1_3_Resolve_SamePackage_External/javax/swing/Foo.java new file mode 100644 index 0000000000000000000000000000000000000000..ea682973fe256b61a6ba729bcc946cbc030e5661 --- /dev/null +++ b/Tests/A2/J1_3_Resolve_SamePackage_External/javax/swing/Foo.java @@ -0,0 +1,7 @@ +package javax.swing; + +public class Foo { + public JComponent component; + + public Foo() {} +} diff --git a/Tests/A2/J1_3_Resolve_SamePackage_External/javax/swing/JComponent.java b/Tests/A2/J1_3_Resolve_SamePackage_External/javax/swing/JComponent.java new file mode 100644 index 0000000000000000000000000000000000000000..be97ac1c8822a543ce780334bfd9e07b6f851914 --- /dev/null +++ b/Tests/A2/J1_3_Resolve_SamePackage_External/javax/swing/JComponent.java @@ -0,0 +1,6 @@ +package javax.swing; +public class JComponent { + protected Object accessibleContext; + public JComponent() { + } +} diff --git a/Tests/A2/J1_3_SingleTypeImport_ClashWithOnDemand/Main.java b/Tests/A2/J1_3_SingleTypeImport_ClashWithOnDemand/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..4eabf9c5919b429962fde32cb5c35779e736c279 --- /dev/null +++ b/Tests/A2/J1_3_SingleTypeImport_ClashWithOnDemand/Main.java @@ -0,0 +1,12 @@ +// TYPE_LINKING + +import java.util.List; +import foo.List.*; + +public class Main { + public Main() {} + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/J1_3_SingleTypeImport_ClashWithOnDemand/foo/List/Bar.java b/Tests/A2/J1_3_SingleTypeImport_ClashWithOnDemand/foo/List/Bar.java new file mode 100644 index 0000000000000000000000000000000000000000..3b4d65db1e231ad1d8dd8eaa7be5d275ddeff94f --- /dev/null +++ b/Tests/A2/J1_3_SingleTypeImport_ClashWithOnDemand/foo/List/Bar.java @@ -0,0 +1,5 @@ +package foo.List; + +public class Bar { + public Bar() {} +} diff --git a/Tests/A2/J1_3_SingleTypeImport_ClashWithOnDemand/java/util/Collection.java b/Tests/A2/J1_3_SingleTypeImport_ClashWithOnDemand/java/util/Collection.java new file mode 100644 index 0000000000000000000000000000000000000000..9be463e2a558b848d566ba3b86fdfbf3cd50ea2f --- /dev/null +++ b/Tests/A2/J1_3_SingleTypeImport_ClashWithOnDemand/java/util/Collection.java @@ -0,0 +1,4 @@ +package java.util; + +public interface Collection { +} diff --git a/Tests/A2/J1_3_SingleTypeImport_ClashWithOnDemand/java/util/List.java b/Tests/A2/J1_3_SingleTypeImport_ClashWithOnDemand/java/util/List.java new file mode 100644 index 0000000000000000000000000000000000000000..85fb05705a7940916c40e4771d37d87ec103dbaf --- /dev/null +++ b/Tests/A2/J1_3_SingleTypeImport_ClashWithOnDemand/java/util/List.java @@ -0,0 +1,4 @@ +package java.util; +public interface List extends Collection { + public int size(); +} diff --git a/Tests/A2/J1_3_SingleTypeImport_ClashWithPackageName/List/A.java b/Tests/A2/J1_3_SingleTypeImport_ClashWithPackageName/List/A.java new file mode 100644 index 0000000000000000000000000000000000000000..b865a6df718582de237cb0459b575cd0a8e6d6ed --- /dev/null +++ b/Tests/A2/J1_3_SingleTypeImport_ClashWithPackageName/List/A.java @@ -0,0 +1,13 @@ +/** + * TypeLinking: + * - Tests whether it is allowed to use a package name that clashes + * with the identifier of a singletype import. + */ +package List; + +import java.util.List; + +public class A{ + + public A(){} +} diff --git a/Tests/A2/J1_3_SingleTypeImport_ClashWithPackageName/Main.java b/Tests/A2/J1_3_SingleTypeImport_ClashWithPackageName/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..e031c5e4268bc3605b1e1790cc1e68c10fadab31 --- /dev/null +++ b/Tests/A2/J1_3_SingleTypeImport_ClashWithPackageName/Main.java @@ -0,0 +1,17 @@ +// TYPE_LINKING +/** + * TypeLinking: + * - Tests whether it is allowed to use a package name that clashes + * with the identifier of a singletype import. + */ + +public class Main{ + + public Main() {} + + public static int test() { + List.A j = new List.A(); + return 123; + } + +} diff --git a/Tests/A2/J1_3_SingleTypeImport_ClashWithPackageName/java/util/Collection.java b/Tests/A2/J1_3_SingleTypeImport_ClashWithPackageName/java/util/Collection.java new file mode 100644 index 0000000000000000000000000000000000000000..9be463e2a558b848d566ba3b86fdfbf3cd50ea2f --- /dev/null +++ b/Tests/A2/J1_3_SingleTypeImport_ClashWithPackageName/java/util/Collection.java @@ -0,0 +1,4 @@ +package java.util; + +public interface Collection { +} diff --git a/Tests/A2/J1_3_SingleTypeImport_ClashWithPackageName/java/util/List.java b/Tests/A2/J1_3_SingleTypeImport_ClashWithPackageName/java/util/List.java new file mode 100644 index 0000000000000000000000000000000000000000..85fb05705a7940916c40e4771d37d87ec103dbaf --- /dev/null +++ b/Tests/A2/J1_3_SingleTypeImport_ClashWithPackageName/java/util/List.java @@ -0,0 +1,4 @@ +package java.util; +public interface List extends Collection { + public int size(); +} diff --git a/Tests/A2/J1_3_SingleTypeImport_ImportProgramClass/Main.java b/Tests/A2/J1_3_SingleTypeImport_ImportProgramClass/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..264737c616f730c8070b1484d25241359e771dca --- /dev/null +++ b/Tests/A2/J1_3_SingleTypeImport_ImportProgramClass/Main.java @@ -0,0 +1,16 @@ +// TYPE_LINKING +/** + * TypeLinking: + * - This testcase tests whether it is allowed to declare two + * different classes in the same package. + **/ +import test.A; + +public class Main{ + + public Main(){} + + public static int test(){ + return A.foo(); + } +} diff --git a/Tests/A2/J1_3_SingleTypeImport_ImportProgramClass/test/A.java b/Tests/A2/J1_3_SingleTypeImport_ImportProgramClass/test/A.java new file mode 100644 index 0000000000000000000000000000000000000000..62d14b9c98881fd2aa01313f6a4dbdbd32fe10f4 --- /dev/null +++ b/Tests/A2/J1_3_SingleTypeImport_ImportProgramClass/test/A.java @@ -0,0 +1,10 @@ +package test; + +public class A{ + + public A(){} + + public static int foo(){ + return 123; + } +} diff --git a/Tests/A2/J1_3_SingleTypeImport_ImportSelf/Main.java b/Tests/A2/J1_3_SingleTypeImport_ImportSelf/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..5ea4c93e9b946b60b33b660dc62dae0f5f83b404 --- /dev/null +++ b/Tests/A2/J1_3_SingleTypeImport_ImportSelf/Main.java @@ -0,0 +1,15 @@ +// TYPE_LINKING +/** + * TypeLinking: + * - The name of a class must not clash with the name of a singletype + * import, but a class may import itself. + */ +public class Main{ + + public Main(){} + + public static int test(){ + return Test.Foo.test(); + } + +} diff --git a/Tests/A2/J1_3_SingleTypeImport_ImportSelf/Test/Foo.java b/Tests/A2/J1_3_SingleTypeImport_ImportSelf/Test/Foo.java new file mode 100644 index 0000000000000000000000000000000000000000..1c578c404db124284736f0fcc036c852f8c7ddfd --- /dev/null +++ b/Tests/A2/J1_3_SingleTypeImport_ImportSelf/Test/Foo.java @@ -0,0 +1,12 @@ +package Test; + +import Test.Foo; + +public class Foo{ + + public Foo(){} + + public static int test(){ + return 123; + } +} diff --git a/Tests/A2/J1_3_SingleTypeImport_MultipleFromSamePackage/Main.java b/Tests/A2/J1_3_SingleTypeImport_MultipleFromSamePackage/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..52f4dad94c9a07dca856cf81a97d2370486b1034 --- /dev/null +++ b/Tests/A2/J1_3_SingleTypeImport_MultipleFromSamePackage/Main.java @@ -0,0 +1,21 @@ +// TYPE_LINKING +/** + * TypeLinking: + * - Testing whether multiple single-type imports from the same package + * is taken into account. + */ + +import java.util.List; +import java.util.LinkedList; +import java.util.ArrayList; +import java.util.Set; +import java.util.HashSet; + +public class Main { + public Main() {} + + public static int test() { + Set s = new HashSet(); + return 123; + } +} diff --git a/Tests/A2/J1_3_SingleTypeImport_MultipleFromSamePackage/java/util/ArrayList.java b/Tests/A2/J1_3_SingleTypeImport_MultipleFromSamePackage/java/util/ArrayList.java new file mode 100644 index 0000000000000000000000000000000000000000..69127b4aac590f4b4f72ca049801d146d00a89fc --- /dev/null +++ b/Tests/A2/J1_3_SingleTypeImport_MultipleFromSamePackage/java/util/ArrayList.java @@ -0,0 +1,39 @@ +package java.util; +public class ArrayList implements List { + protected int size = 0; + protected Object[] os = new Object[1]; + public ArrayList() { + } + public int size() { + return size; + } + public Object get(int index) { + return os[index]; + } + public Object set(int index, Object obj) { + Object ret = os[index]; + os[index] = obj; + return ret; + } + public boolean add(Object obj) { + if(size >= os.length) { + Object[] newos = new Object[os.length*2]; + for(int i = 0; i < size; i = i + 1) { + newos[i] = os[i]; + } + os = newos; + } + size = size + 1; + if(os[size-1] == obj) return false; + os[size-1] = obj; + return true; + } + public Object remove(int index) { + Object ret = os[index]; + size = size - 1; + for(int i = index; i < size; i = i + 1) { + os[i] = os[i+1]; + } + return ret; + } +} diff --git a/Tests/A2/J1_3_SingleTypeImport_MultipleFromSamePackage/java/util/Collection.java b/Tests/A2/J1_3_SingleTypeImport_MultipleFromSamePackage/java/util/Collection.java new file mode 100644 index 0000000000000000000000000000000000000000..9be463e2a558b848d566ba3b86fdfbf3cd50ea2f --- /dev/null +++ b/Tests/A2/J1_3_SingleTypeImport_MultipleFromSamePackage/java/util/Collection.java @@ -0,0 +1,4 @@ +package java.util; + +public interface Collection { +} diff --git a/Tests/A2/J1_3_SingleTypeImport_MultipleFromSamePackage/java/util/HashSet.java b/Tests/A2/J1_3_SingleTypeImport_MultipleFromSamePackage/java/util/HashSet.java new file mode 100644 index 0000000000000000000000000000000000000000..bfbd6ed73aa680ea7dfaa1f9b0883b43c0563554 --- /dev/null +++ b/Tests/A2/J1_3_SingleTypeImport_MultipleFromSamePackage/java/util/HashSet.java @@ -0,0 +1,8 @@ +package java.util; +public class HashSet implements Set { + public HashSet() { + } + public boolean addAll(Collection c) { + return false; + } +} diff --git a/Tests/A2/J1_3_SingleTypeImport_MultipleFromSamePackage/java/util/LinkedList.java b/Tests/A2/J1_3_SingleTypeImport_MultipleFromSamePackage/java/util/LinkedList.java new file mode 100644 index 0000000000000000000000000000000000000000..7b3f6328da16aee2b4618529a3132356a7cc34d3 --- /dev/null +++ b/Tests/A2/J1_3_SingleTypeImport_MultipleFromSamePackage/java/util/LinkedList.java @@ -0,0 +1,32 @@ +package java.util; +public class LinkedList implements List { + protected boolean empty = true; + protected Object cur = null; + protected LinkedList next = null; + public LinkedList() { + } + public int size() { + if(empty) return 0; + else if(next == null) return 1; + else return 1+next.size(); + } + public boolean add(Object o) { + if(empty) { + cur = o; + empty = false; + } else { + if(next == null) { + next = new LinkedList(); + } + next.add(o); + } + return true; + } + public Object clone() { + LinkedList ret = new LinkedList(); + if(next != null) ret.next = (LinkedList) next.clone(); + ret.cur = cur; + ret.empty = empty; + return ret; + } +} diff --git a/Tests/A2/J1_3_SingleTypeImport_MultipleFromSamePackage/java/util/List.java b/Tests/A2/J1_3_SingleTypeImport_MultipleFromSamePackage/java/util/List.java new file mode 100644 index 0000000000000000000000000000000000000000..85fb05705a7940916c40e4771d37d87ec103dbaf --- /dev/null +++ b/Tests/A2/J1_3_SingleTypeImport_MultipleFromSamePackage/java/util/List.java @@ -0,0 +1,4 @@ +package java.util; +public interface List extends Collection { + public int size(); +} diff --git a/Tests/A2/J1_3_SingleTypeImport_MultipleFromSamePackage/java/util/Set.java b/Tests/A2/J1_3_SingleTypeImport_MultipleFromSamePackage/java/util/Set.java new file mode 100644 index 0000000000000000000000000000000000000000..f106e7533984b05c9cb43b0fc6af5ed8ce8f7438 --- /dev/null +++ b/Tests/A2/J1_3_SingleTypeImport_MultipleFromSamePackage/java/util/Set.java @@ -0,0 +1,4 @@ +package java.util; +public interface Set extends Collection { + public boolean addAll(Collection c); +} diff --git a/Tests/A2/J1_3_SingleTypeImport_MultipleImportsOfSameType/Main.java b/Tests/A2/J1_3_SingleTypeImport_MultipleImportsOfSameType/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..720466a52a95f144bfc47718589f6c2c6da0e760 --- /dev/null +++ b/Tests/A2/J1_3_SingleTypeImport_MultipleImportsOfSameType/Main.java @@ -0,0 +1,18 @@ +// TYPE_LINKING +/** + * TypeLinking: + * - Singletype imports may clash, if the names refer to the same type. + */ + +import java.io.File; +import java.io.File; + +public class Main{ + + public Main(){} + + public static int test(){ + return 123; + } + +} diff --git a/Tests/A2/J1_3_SingleTypeImport_MultipleImportsOfSameType/java/io/File.java b/Tests/A2/J1_3_SingleTypeImport_MultipleImportsOfSameType/java/io/File.java new file mode 100644 index 0000000000000000000000000000000000000000..2896897f9669271624feef8be1f3f45257bce096 --- /dev/null +++ b/Tests/A2/J1_3_SingleTypeImport_MultipleImportsOfSameType/java/io/File.java @@ -0,0 +1,5 @@ +package java.io; +public class File { + public File() { + } +} diff --git a/Tests/A2/J1_3_SingleTypeImport_NoClash/Main.java b/Tests/A2/J1_3_SingleTypeImport_NoClash/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..6e4e46427b2215eb73e648fe55350743394f30b8 --- /dev/null +++ b/Tests/A2/J1_3_SingleTypeImport_NoClash/Main.java @@ -0,0 +1,12 @@ +// TYPE_LINKING + +import a.bc; +import ab.c; + +public class Main { + public Main() {} + + public static int test() { + return bc.test()+c.test(); + } +} diff --git a/Tests/A2/J1_3_SingleTypeImport_NoClash/a/bc.java b/Tests/A2/J1_3_SingleTypeImport_NoClash/a/bc.java new file mode 100644 index 0000000000000000000000000000000000000000..90ad9552577fed66c2891819f0e3e088c04b04b1 --- /dev/null +++ b/Tests/A2/J1_3_SingleTypeImport_NoClash/a/bc.java @@ -0,0 +1,9 @@ +package a; + +public class bc { + public bc() {} + + public static int test() { + return 83; + } +} diff --git a/Tests/A2/J1_3_SingleTypeImport_NoClash/ab/c.java b/Tests/A2/J1_3_SingleTypeImport_NoClash/ab/c.java new file mode 100644 index 0000000000000000000000000000000000000000..9f93dfae56f9c816006851f1684fa100ba50e6d5 --- /dev/null +++ b/Tests/A2/J1_3_SingleTypeImport_NoClash/ab/c.java @@ -0,0 +1,9 @@ +package ab; + +public class c { + public c() {} + + public static int test() { + return 40; + } +} diff --git a/Tests/A2/J1_4_AbstractMethod_InheritAbstractFromObject/A.java b/Tests/A2/J1_4_AbstractMethod_InheritAbstractFromObject/A.java new file mode 100644 index 0000000000000000000000000000000000000000..c5fbf0aac74e5da93715c56b55c96ba6c2b54a53 --- /dev/null +++ b/Tests/A2/J1_4_AbstractMethod_InheritAbstractFromObject/A.java @@ -0,0 +1,6 @@ +public abstract class A{ + + public A(){} + + public abstract String toString(); +} diff --git a/Tests/A2/J1_4_AbstractMethod_InheritAbstractFromObject/Main.java b/Tests/A2/J1_4_AbstractMethod_InheritAbstractFromObject/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..0cad1e6938eff3320a8d22fe1feb02a886a9dc68 --- /dev/null +++ b/Tests/A2/J1_4_AbstractMethod_InheritAbstractFromObject/Main.java @@ -0,0 +1,10 @@ +// HIERARCHY +public abstract class Main extends A implements Cloneable{ + + public Main(){} + + public static int test(){ + return 123; + } + +} diff --git a/Tests/A2/J1_4_AbstractMethod_InheritedFromInterface/Main.java b/Tests/A2/J1_4_AbstractMethod_InheritedFromInterface/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..10daaba77b87e7c007f1cf1d85d8eb32579a460f --- /dev/null +++ b/Tests/A2/J1_4_AbstractMethod_InheritedFromInterface/Main.java @@ -0,0 +1,23 @@ +// HIERARCHY +/** + * Hierarchy check: + * - A class that has (declares or inherits) any abstract methods must + * be abstract (8.1.1.1). (method equals(Object) inherited from superclass) + */ +import java.util.Comparator; + +public class Main implements Comparator{ + + public Main(){ + } + + public int compare(Object o1, Object o2){ + return o1.hashCode() - o2.hashCode() + 123; + } + + public static int test(){ + Main object = new Main(); + return object.compare((Object)object, (Object)object); + } + +} diff --git a/Tests/A2/J1_4_AbstractMethod_InheritedFromInterface/java/util/Comparator.java b/Tests/A2/J1_4_AbstractMethod_InheritedFromInterface/java/util/Comparator.java new file mode 100644 index 0000000000000000000000000000000000000000..775e87208f6b105ba0228f16b187c88967c137fe --- /dev/null +++ b/Tests/A2/J1_4_AbstractMethod_InheritedFromInterface/java/util/Comparator.java @@ -0,0 +1,5 @@ +package java.util; + +public interface Comparator { + public int compare(Object o1, Object o2); +} diff --git a/Tests/A2/J1_4_ClassExtendsClass_SameName/Main.java b/Tests/A2/J1_4_ClassExtendsClass_SameName/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..b009408c94d5eb7f5499ef6fd2bfc86f3e711375 --- /dev/null +++ b/Tests/A2/J1_4_ClassExtendsClass_SameName/Main.java @@ -0,0 +1,9 @@ +// HIERARCHY +public class Main { + public Main() {} + + public static int test() { + foo.LinkedList l = new foo.LinkedList(); + return l.size(); + } +} diff --git a/Tests/A2/J1_4_ClassExtendsClass_SameName/foo/LinkedList.java b/Tests/A2/J1_4_ClassExtendsClass_SameName/foo/LinkedList.java new file mode 100644 index 0000000000000000000000000000000000000000..c3cdb9300e303c0befaaeecf55e8d9a228224e76 --- /dev/null +++ b/Tests/A2/J1_4_ClassExtendsClass_SameName/foo/LinkedList.java @@ -0,0 +1,9 @@ +package foo; + +public class LinkedList extends java.util.LinkedList { + public LinkedList() {} + + public int size() { + return 123; + } +} diff --git a/Tests/A2/J1_4_ClassExtendsClass_SameName/java/util/Collection.java b/Tests/A2/J1_4_ClassExtendsClass_SameName/java/util/Collection.java new file mode 100644 index 0000000000000000000000000000000000000000..9be463e2a558b848d566ba3b86fdfbf3cd50ea2f --- /dev/null +++ b/Tests/A2/J1_4_ClassExtendsClass_SameName/java/util/Collection.java @@ -0,0 +1,4 @@ +package java.util; + +public interface Collection { +} diff --git a/Tests/A2/J1_4_ClassExtendsClass_SameName/java/util/LinkedList.java b/Tests/A2/J1_4_ClassExtendsClass_SameName/java/util/LinkedList.java new file mode 100644 index 0000000000000000000000000000000000000000..7b3f6328da16aee2b4618529a3132356a7cc34d3 --- /dev/null +++ b/Tests/A2/J1_4_ClassExtendsClass_SameName/java/util/LinkedList.java @@ -0,0 +1,32 @@ +package java.util; +public class LinkedList implements List { + protected boolean empty = true; + protected Object cur = null; + protected LinkedList next = null; + public LinkedList() { + } + public int size() { + if(empty) return 0; + else if(next == null) return 1; + else return 1+next.size(); + } + public boolean add(Object o) { + if(empty) { + cur = o; + empty = false; + } else { + if(next == null) { + next = new LinkedList(); + } + next.add(o); + } + return true; + } + public Object clone() { + LinkedList ret = new LinkedList(); + if(next != null) ret.next = (LinkedList) next.clone(); + ret.cur = cur; + ret.empty = empty; + return ret; + } +} diff --git a/Tests/A2/J1_4_ClassExtendsClass_SameName/java/util/List.java b/Tests/A2/J1_4_ClassExtendsClass_SameName/java/util/List.java new file mode 100644 index 0000000000000000000000000000000000000000..85fb05705a7940916c40e4771d37d87ec103dbaf --- /dev/null +++ b/Tests/A2/J1_4_ClassExtendsClass_SameName/java/util/List.java @@ -0,0 +1,4 @@ +package java.util; +public interface List extends Collection { + public int size(); +} diff --git a/Tests/A2/J1_4_ClassImplementsInterface_MultipleTimes/Bar.java b/Tests/A2/J1_4_ClassImplementsInterface_MultipleTimes/Bar.java new file mode 100644 index 0000000000000000000000000000000000000000..c7af0a20816d2899d6b9a1abe3492d6dbbab76b6 --- /dev/null +++ b/Tests/A2/J1_4_ClassImplementsInterface_MultipleTimes/Bar.java @@ -0,0 +1,5 @@ +import java.util.*; + +public abstract class Bar extends Foo implements List { + public Bar() {} +} diff --git a/Tests/A2/J1_4_ClassImplementsInterface_MultipleTimes/Foo.java b/Tests/A2/J1_4_ClassImplementsInterface_MultipleTimes/Foo.java new file mode 100644 index 0000000000000000000000000000000000000000..cb90fe80ced0f60704e96ebf39f7f7500d1db682 --- /dev/null +++ b/Tests/A2/J1_4_ClassImplementsInterface_MultipleTimes/Foo.java @@ -0,0 +1,5 @@ +import java.util.*; + +public abstract class Foo implements List { + public Foo() {} +} diff --git a/Tests/A2/J1_4_ClassImplementsInterface_MultipleTimes/Main.java b/Tests/A2/J1_4_ClassImplementsInterface_MultipleTimes/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..d679623306ca85251ebb19986f32bdf2bb328315 --- /dev/null +++ b/Tests/A2/J1_4_ClassImplementsInterface_MultipleTimes/Main.java @@ -0,0 +1,11 @@ +// HIERARCHY + +import java.util.*; + +public abstract class Main extends Bar implements Collection,List { + public Main() {} + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/J1_4_ClassImplementsInterface_MultipleTimes/java/util/Collection.java b/Tests/A2/J1_4_ClassImplementsInterface_MultipleTimes/java/util/Collection.java new file mode 100644 index 0000000000000000000000000000000000000000..9be463e2a558b848d566ba3b86fdfbf3cd50ea2f --- /dev/null +++ b/Tests/A2/J1_4_ClassImplementsInterface_MultipleTimes/java/util/Collection.java @@ -0,0 +1,4 @@ +package java.util; + +public interface Collection { +} diff --git a/Tests/A2/J1_4_ClassImplementsInterface_MultipleTimes/java/util/List.java b/Tests/A2/J1_4_ClassImplementsInterface_MultipleTimes/java/util/List.java new file mode 100644 index 0000000000000000000000000000000000000000..85fb05705a7940916c40e4771d37d87ec103dbaf --- /dev/null +++ b/Tests/A2/J1_4_ClassImplementsInterface_MultipleTimes/java/util/List.java @@ -0,0 +1,4 @@ +package java.util; +public interface List extends Collection { + public int size(); +} diff --git a/Tests/A2/J1_4_Constructor_DuplicateArrayTypes.java b/Tests/A2/J1_4_Constructor_DuplicateArrayTypes.java new file mode 100644 index 0000000000000000000000000000000000000000..dbf7c6efc1fd475a3ebc0740811e0c32c05b07b4 --- /dev/null +++ b/Tests/A2/J1_4_Constructor_DuplicateArrayTypes.java @@ -0,0 +1,15 @@ +// HIERARCHY +/** + * Hierarchy: + * - A class must not declare two constructors with the same parameter + * types (8.8.2, simple constraint 5). + */ +public class J1_4_Constructor_DuplicateArrayTypes { + public J1_4_Constructor_DuplicateArrayTypes(Object[] a) {} + public J1_4_Constructor_DuplicateArrayTypes(int[] a) {} + public J1_4_Constructor_DuplicateArrayTypes() {} + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/J1_4_Constructor_MatchAsSets.java b/Tests/A2/J1_4_Constructor_MatchAsSets.java new file mode 100644 index 0000000000000000000000000000000000000000..fc15471300c4738cc1d00744de2f2fd8e264b3bc --- /dev/null +++ b/Tests/A2/J1_4_Constructor_MatchAsSets.java @@ -0,0 +1,14 @@ +// HIERARCHY +/* Hierarchy: + * A class must not declare two constructors with the same parameter types + */ +public class J1_4_Constructor_MatchAsSets { + + public J1_4_Constructor_MatchAsSets() {} + public J1_4_Constructor_MatchAsSets(String a, Object b) {} + public J1_4_Constructor_MatchAsSets(Object b, String a) {} + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/J1_4_DuplicateMethodDeclare_MethodNameEqualsConstructorName.java b/Tests/A2/J1_4_DuplicateMethodDeclare_MethodNameEqualsConstructorName.java new file mode 100644 index 0000000000000000000000000000000000000000..8de359d46b50dcd52f01b7e77c9d28df4c37d6b8 --- /dev/null +++ b/Tests/A2/J1_4_DuplicateMethodDeclare_MethodNameEqualsConstructorName.java @@ -0,0 +1,21 @@ +// HIERARCHY +/** + * Hierarchy: + * - A class may not declare two methods with the same signature, but + * it may declare a method with the same name and parameter types as a + * constructor. + */ +public class J1_4_DuplicateMethodDeclare_MethodNameEqualsConstructorName{ + + public J1_4_DuplicateMethodDeclare_MethodNameEqualsConstructorName(){} + public J1_4_DuplicateMethodDeclare_MethodNameEqualsConstructorName(int a){} + + public int J1_4_DuplicateMethodDeclare_MethodNameEqualsConstructorName(int a){ + return a; + } + + public static int test(){ + return new J1_4_DuplicateMethodDeclare_MethodNameEqualsConstructorName(0).J1_4_DuplicateMethodDeclare_MethodNameEqualsConstructorName(123); + } +} + diff --git a/Tests/A2/J1_4_InheritedFields_SameField_TwoWays/Foo.java b/Tests/A2/J1_4_InheritedFields_SameField_TwoWays/Foo.java new file mode 100644 index 0000000000000000000000000000000000000000..71444c5117ea68597a0918ad582929cdb25e69b2 --- /dev/null +++ b/Tests/A2/J1_4_InheritedFields_SameField_TwoWays/Foo.java @@ -0,0 +1,3 @@ +public class Foo implements org.omg.CORBA.ARG_IN { + public Foo() {} +} diff --git a/Tests/A2/J1_4_InheritedFields_SameField_TwoWays/Main.java b/Tests/A2/J1_4_InheritedFields_SameField_TwoWays/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..6c98ac6e3d8edb88e92ad8a25873a0cf43b38558 --- /dev/null +++ b/Tests/A2/J1_4_InheritedFields_SameField_TwoWays/Main.java @@ -0,0 +1,14 @@ +//HIERARCHY + +/** + * Both Main and Foo implement org.omg.CORBA.ARG_IN and thus inherited + * the same .value field. + */ +public class Main extends Foo implements org.omg.CORBA.ARG_IN { + public Main() {} + + public static int test() { + return 123; + } +} + diff --git a/Tests/A2/J1_4_InheritedFields_SameField_TwoWays/org/omg/CORBA/ARG_IN.java b/Tests/A2/J1_4_InheritedFields_SameField_TwoWays/org/omg/CORBA/ARG_IN.java new file mode 100644 index 0000000000000000000000000000000000000000..62ea53b5702eef94c9690f65e9880b1ca2fb0c70 --- /dev/null +++ b/Tests/A2/J1_4_InheritedFields_SameField_TwoWays/org/omg/CORBA/ARG_IN.java @@ -0,0 +1,4 @@ +package org.omg.CORBA; + +public interface ARG_IN { +} diff --git a/Tests/A2/J1_4_InheritedFields_SameField_TwoWays/org/omg/CORBA/portable/OutputStream.java b/Tests/A2/J1_4_InheritedFields_SameField_TwoWays/org/omg/CORBA/portable/OutputStream.java new file mode 100644 index 0000000000000000000000000000000000000000..4df6cafd9b334eff01a75189a01c1a3fa90fadd2 --- /dev/null +++ b/Tests/A2/J1_4_InheritedFields_SameField_TwoWays/org/omg/CORBA/portable/OutputStream.java @@ -0,0 +1,5 @@ +package org.omg.CORBA.portable; +public class OutputStream { + public OutputStream() { + } +} diff --git a/Tests/A2/J1_4_InterfaceMethod_FromObject/Main.java b/Tests/A2/J1_4_InterfaceMethod_FromObject/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..9b7d362d7c1805f36112107bf9409fb7beeadfdd --- /dev/null +++ b/Tests/A2/J1_4_InterfaceMethod_FromObject/Main.java @@ -0,0 +1,22 @@ +// HIERARCHY +/* Hierarchy: + * JLS 9.2: + * If an interface has no direct superinterfaces, then the interface implicitly + * declares a public abstract member method m with signature s, return type r, + * and throws clause t corresponding to each public instance method m with + * signature s, return type r, and throws clause t declared in Object, + * unless a method with the same signature, same return type, and a compatible + * throws clause is explicitly declared by the interface. + */ + +public class Main { + public Main() {} + + public String method(java.io.Serializable o) { + return o.toString(); + } + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/J1_4_MethodDeclare_DuplicateArrayTypes.java b/Tests/A2/J1_4_MethodDeclare_DuplicateArrayTypes.java new file mode 100644 index 0000000000000000000000000000000000000000..27fd6de2cf37a5930b94d52619494c218828f6c7 --- /dev/null +++ b/Tests/A2/J1_4_MethodDeclare_DuplicateArrayTypes.java @@ -0,0 +1,16 @@ +// HIERARCHY +/** + * Hierarchy: + * - A class or interface must not declare two methods with the same + * name and parameter types (8.4, 9.4, well-formedness constraint 2). + */ +public class J1_4_MethodDeclare_DuplicateArrayTypes { + public J1_4_MethodDeclare_DuplicateArrayTypes() {} + + public void method(Object[] a) {} + public void method(int[] a) {} + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/J1_4_Override_FinalOverrideNonFinal.java b/Tests/A2/J1_4_Override_FinalOverrideNonFinal.java new file mode 100644 index 0000000000000000000000000000000000000000..d6bfed94150bddbbc7ca0fc1480263e6af75688f --- /dev/null +++ b/Tests/A2/J1_4_Override_FinalOverrideNonFinal.java @@ -0,0 +1,18 @@ +// HIERARCHY +/* Hierarchy: + * A method must not override a final method + * (8.4.3.3, well-formedness constraint 9). + * + * This is the opposite case. + */ +public class J1_4_Override_FinalOverrideNonFinal { + public J1_4_Override_FinalOverrideNonFinal() {} + + public final String toString() { + return "J1_4_Override_FinalOverrideNonFinal"; + } + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/J1_4_Override_PublicOverridesProtected.java b/Tests/A2/J1_4_Override_PublicOverridesProtected.java new file mode 100644 index 0000000000000000000000000000000000000000..eb9e15f57b4ef1a8f88f480c2549552453a92750 --- /dev/null +++ b/Tests/A2/J1_4_Override_PublicOverridesProtected.java @@ -0,0 +1,18 @@ +// HIERARCHY +/* Hierarchy: + * A protected method must not override a public method + * (8.4.6.3, well-formedness constraint 7). + * + * This is the opposite case. + */ +public class J1_4_Override_PublicOverridesProtected { + public J1_4_Override_PublicOverridesProtected() {} + + public Object clone() { + return null; + } + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/J1_4_PackageClashWithType_Loaded/Main.java b/Tests/A2/J1_4_PackageClashWithType_Loaded/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..dbe9f6dc1ae94ccdd3f32c5f33ba592d381cccfe --- /dev/null +++ b/Tests/A2/J1_4_PackageClashWithType_Loaded/Main.java @@ -0,0 +1,24 @@ +//TYPE_LINKING + +/** + * TypeLinking: + * Check that no package names or prefixes hereof (consisting of whole + * identifiers) of declared packages, single-type-import declarations + * or used import-on-demand declarations resolve to qualified types, + * i.e. types not in the default package. + * + * The declared class javax.swing.tree does not clash with the package + * of the same name because javax.swing.tree is not refered, nor does + * is clash because javax.swing.tree is implicitly loaded by the use + * of JTree. + */ +import javax.swing.*; + +public class Main { + public Main() {} + + public static int test() { + JTree tree = new JTree(); + return 123; + } +} diff --git a/Tests/A2/J1_4_PackageClashWithType_Loaded/javax/swing/JTree.java b/Tests/A2/J1_4_PackageClashWithType_Loaded/javax/swing/JTree.java new file mode 100644 index 0000000000000000000000000000000000000000..f666d840df83c0ffca7ec7dc72589fbab45c40dc --- /dev/null +++ b/Tests/A2/J1_4_PackageClashWithType_Loaded/javax/swing/JTree.java @@ -0,0 +1,5 @@ +package javax.swing; +public class JTree { + public JTree() { + } +} diff --git a/Tests/A2/J1_4_PackageClashWithType_Loaded/javax/swing/tree.java b/Tests/A2/J1_4_PackageClashWithType_Loaded/javax/swing/tree.java new file mode 100644 index 0000000000000000000000000000000000000000..d22d405395aaf86dbe3d7140fa6acd6de3ac262a --- /dev/null +++ b/Tests/A2/J1_4_PackageClashWithType_Loaded/javax/swing/tree.java @@ -0,0 +1,5 @@ +package javax.swing; + +public class tree { + public tree() {} +} diff --git a/Tests/A2/J1_4_PackageClashWithType_NotLoaded/Main.java b/Tests/A2/J1_4_PackageClashWithType_NotLoaded/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..30096151a6683220fc91b7d630e07476ffc68454 --- /dev/null +++ b/Tests/A2/J1_4_PackageClashWithType_NotLoaded/Main.java @@ -0,0 +1,19 @@ +//TYPE_LINKING + +/** + * TypeLinking: + * Check that no package names or prefixes hereof (consisting of whole + * identifiers) of declared packages, single-type-import declarations + * or used import-on-demand declarations resolve to qualified types, + * i.e. types not in the default package. + * + * The declared class javax.swing.tree does not clash with the package + * of the same name because javax.swing.tree is not refered. + */ +public class Main { + public Main() {} + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/J1_4_PackageClashWithType_NotLoaded/javax/swing/tree.java b/Tests/A2/J1_4_PackageClashWithType_NotLoaded/javax/swing/tree.java new file mode 100644 index 0000000000000000000000000000000000000000..d22d405395aaf86dbe3d7140fa6acd6de3ac262a --- /dev/null +++ b/Tests/A2/J1_4_PackageClashWithType_NotLoaded/javax/swing/tree.java @@ -0,0 +1,5 @@ +package javax.swing; + +public class tree { + public tree() {} +} diff --git a/Tests/A2/J1_4_PackageClashWithType_SingleTypeImport_DefaultPackage/Main.java b/Tests/A2/J1_4_PackageClashWithType_SingleTypeImport_DefaultPackage/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..930c3807dee2ef86c75e317d473858dc80efb790 --- /dev/null +++ b/Tests/A2/J1_4_PackageClashWithType_SingleTypeImport_DefaultPackage/Main.java @@ -0,0 +1,21 @@ +//TYPE_LINKING + +/** + * TypeLinking: + * Check that no package names or prefixes hereof (consisting of whole + * identifiers) of declared packages, single-type-import declarations + * or used import-on-demand declarations resolve to qualified types, + * i.e. types not in the default package. + * + * The prefix 'foo' of the single-type import declaration foo.bar does + * not clash with class foo because it is class foo is in the default package. + */ +import foo.bar; + +public class Main { + public Main() {} + + public static int test() { + return bar.method(); + } +} diff --git a/Tests/A2/J1_4_PackageClashWithType_SingleTypeImport_DefaultPackage/foo.java b/Tests/A2/J1_4_PackageClashWithType_SingleTypeImport_DefaultPackage/foo.java new file mode 100644 index 0000000000000000000000000000000000000000..85116170b00e4383c59d7821361a6f6052735674 --- /dev/null +++ b/Tests/A2/J1_4_PackageClashWithType_SingleTypeImport_DefaultPackage/foo.java @@ -0,0 +1,4 @@ +public class foo { + public foo() { + } +} diff --git a/Tests/A2/J1_4_PackageClashWithType_SingleTypeImport_DefaultPackage/foo/bar.java b/Tests/A2/J1_4_PackageClashWithType_SingleTypeImport_DefaultPackage/foo/bar.java new file mode 100644 index 0000000000000000000000000000000000000000..f866758828f20d01a606812b63d1375f61e2128f --- /dev/null +++ b/Tests/A2/J1_4_PackageClashWithType_SingleTypeImport_DefaultPackage/foo/bar.java @@ -0,0 +1,10 @@ +package foo; + +public class bar { + public bar() { + } + + public static int method() { + return 123; + } +} diff --git a/Tests/A2/J1_4_PackageNameIsClassName_DefaultPackage/Main.java b/Tests/A2/J1_4_PackageNameIsClassName_DefaultPackage/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..bb34cabb705cab671f76018d0d649675dcdc98fe --- /dev/null +++ b/Tests/A2/J1_4_PackageNameIsClassName_DefaultPackage/Main.java @@ -0,0 +1,23 @@ +//TYPE_LINKING + +/** + * TypeLinking: + * Check that no package names or prefixes hereof (consisting of whole + * identifiers) of declared packages, single-type-import declarations + * or used import-on-demand declarations resolve to qualified types, + * i.e. types not in the default package. + * + * The prefix 'foo' of the class foo.bar does not clash with class foo + * because it is class foo is in the default package. + */ +import bar.*; + +public class Main { + public Main() {} + + public static int test() { + foo f = new foo(); + bar b = new bar(); + return 123; + } +} diff --git a/Tests/A2/J1_4_PackageNameIsClassName_DefaultPackage/bar/bar.java b/Tests/A2/J1_4_PackageNameIsClassName_DefaultPackage/bar/bar.java new file mode 100644 index 0000000000000000000000000000000000000000..2708c11f5934c48b878fe5dba6938d9dd6da8547 --- /dev/null +++ b/Tests/A2/J1_4_PackageNameIsClassName_DefaultPackage/bar/bar.java @@ -0,0 +1,9 @@ +package bar; + +import foo.*; + +public class bar { + public bar() { + baz f = new baz(); + } +} diff --git a/Tests/A2/J1_4_PackageNameIsClassName_DefaultPackage/foo.java b/Tests/A2/J1_4_PackageNameIsClassName_DefaultPackage/foo.java new file mode 100644 index 0000000000000000000000000000000000000000..85116170b00e4383c59d7821361a6f6052735674 --- /dev/null +++ b/Tests/A2/J1_4_PackageNameIsClassName_DefaultPackage/foo.java @@ -0,0 +1,4 @@ +public class foo { + public foo() { + } +} diff --git a/Tests/A2/J1_4_PackageNameIsClassName_DefaultPackage/foo/baz.java b/Tests/A2/J1_4_PackageNameIsClassName_DefaultPackage/foo/baz.java new file mode 100644 index 0000000000000000000000000000000000000000..6fe1f134568beff1b45e4075e77b83e7e8f9c5ee --- /dev/null +++ b/Tests/A2/J1_4_PackageNameIsClassName_DefaultPackage/foo/baz.java @@ -0,0 +1,6 @@ +package foo; + +public class baz { + public baz() { + } +} diff --git a/Tests/A2/J1_4_Resolve_NotDefaultPackage/Main.java b/Tests/A2/J1_4_Resolve_NotDefaultPackage/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..baf7440280ad256f2a2da218810976b4de44de32 --- /dev/null +++ b/Tests/A2/J1_4_Resolve_NotDefaultPackage/Main.java @@ -0,0 +1,9 @@ +//TYPE_LINKING + +public class Main { + public Main() {} + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/J1_4_Resolve_NotDefaultPackage/foo.java b/Tests/A2/J1_4_Resolve_NotDefaultPackage/foo.java new file mode 100644 index 0000000000000000000000000000000000000000..236dd1b51b0b286d643db814937a8839572cf784 --- /dev/null +++ b/Tests/A2/J1_4_Resolve_NotDefaultPackage/foo.java @@ -0,0 +1,3 @@ +public class foo { + public foo() {} +} diff --git a/Tests/A2/J1_4_Resolve_NotDefaultPackage/foo/bar.java b/Tests/A2/J1_4_Resolve_NotDefaultPackage/foo/bar.java new file mode 100644 index 0000000000000000000000000000000000000000..1d72ebcae15420ab1106fa5374a7a517b1f833d2 --- /dev/null +++ b/Tests/A2/J1_4_Resolve_NotDefaultPackage/foo/bar.java @@ -0,0 +1,7 @@ +package foo; + +public class bar { + public foo.bar fb = null; + + public bar() {} +} diff --git a/Tests/A2/J1_4_SingleTypeImport_OnDemandsClash/Main.java b/Tests/A2/J1_4_SingleTypeImport_OnDemandsClash/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..6166c8b3dc04b96498beb5c58eb3df2a2daa703a --- /dev/null +++ b/Tests/A2/J1_4_SingleTypeImport_OnDemandsClash/Main.java @@ -0,0 +1,20 @@ +// TYPE_LINKING +/** + * TypeLinking: + * - Tests whether singletype imports indeed have higher priority than + * on-demand imports. + */ +import Test.OutputStream; +import java.io.*; +import org.omg.CORBA.portable.*; + +public class Main{ + + public Main(){} + + public static int test(){ + OutputStream o = new OutputStream(); + return o.write(123).length(); + } + +} diff --git a/Tests/A2/J1_4_SingleTypeImport_OnDemandsClash/Test/OutputStream.java b/Tests/A2/J1_4_SingleTypeImport_OnDemandsClash/Test/OutputStream.java new file mode 100644 index 0000000000000000000000000000000000000000..39d78c516091ddf95be71e2090753222e5c242e8 --- /dev/null +++ b/Tests/A2/J1_4_SingleTypeImport_OnDemandsClash/Test/OutputStream.java @@ -0,0 +1,19 @@ +package Test; + +public class OutputStream{ + + public OutputStream(){} + + public String write(int a){ + String result = ""; + while (a >= 41){ + result = result + "All fun and no play makes Jack a dull boy"; + a = a - 41; + } + while (a > 0){ + result = result + "."; + a = a - 1; + } + return result; + } +} diff --git a/Tests/A2/J1_4_SingleTypeImport_OnDemandsClash/org/omg/CORBA/portable/OutputStream.java b/Tests/A2/J1_4_SingleTypeImport_OnDemandsClash/org/omg/CORBA/portable/OutputStream.java new file mode 100644 index 0000000000000000000000000000000000000000..fbc9382a6264b3bf7ec5c31e26d9c455ae055560 --- /dev/null +++ b/Tests/A2/J1_4_SingleTypeImport_OnDemandsClash/org/omg/CORBA/portable/OutputStream.java @@ -0,0 +1,19 @@ +package org.omg.CORBA.portable; + +public class OutputStream{ + + public OutputStream(){} + + public String write(int a){ + String result = ""; + while (a >= 41){ + result = result + "All fun and no play makes Jack a dull boy"; + a = a - 41; + } + while (a > 0){ + result = result + "."; + a = a - 1; + } + return result; + } +} diff --git a/Tests/A2/J1_6_ProtectedAccess_StaticMethod_This/A.java b/Tests/A2/J1_6_ProtectedAccess_StaticMethod_This/A.java new file mode 100644 index 0000000000000000000000000000000000000000..606702b0cc02994bb3d5f3cb1b9155a27db5b4ea --- /dev/null +++ b/Tests/A2/J1_6_ProtectedAccess_StaticMethod_This/A.java @@ -0,0 +1,11 @@ +package A; + +public class A { + protected A() {} + + protected void instanceMethod() {} + + protected static void staticMethod() {} + + protected int instanceField; +} diff --git a/Tests/A2/J1_6_ProtectedAccess_StaticMethod_This/B.java b/Tests/A2/J1_6_ProtectedAccess_StaticMethod_This/B.java new file mode 100644 index 0000000000000000000000000000000000000000..005b31acdf24a4618b9998911e45041b6b4e55e4 --- /dev/null +++ b/Tests/A2/J1_6_ProtectedAccess_StaticMethod_This/B.java @@ -0,0 +1,7 @@ +package B; + +public class B extends A.A { + protected B() {} + + protected B(int x) {} +} diff --git a/Tests/A2/J1_6_ProtectedAccess_StaticMethod_This/C.java b/Tests/A2/J1_6_ProtectedAccess_StaticMethod_This/C.java new file mode 100644 index 0000000000000000000000000000000000000000..9a6197fb09909241ebf2a238ee12e5a2a566347b --- /dev/null +++ b/Tests/A2/J1_6_ProtectedAccess_StaticMethod_This/C.java @@ -0,0 +1,21 @@ +/* TypeChecking: + * + * Test for Protected Access + * + * B.B extends A.A + * C.C extends B.B + * D.D extends C.C + */ + +package C; + +public class C extends B.B { + public C() {} + + /* static method access through this class + * => OK, since C is a subclass of the declaring class A.A (6.6.2.1) + */ + public void staticMethodAccessFromThisClass() { + C.staticMethod(); + } +} diff --git a/Tests/A2/J1_6_ProtectedAccess_StaticMethod_This/D.java b/Tests/A2/J1_6_ProtectedAccess_StaticMethod_This/D.java new file mode 100644 index 0000000000000000000000000000000000000000..9da2965d03a6f3c22f328161c2567b7af214c643 --- /dev/null +++ b/Tests/A2/J1_6_ProtectedAccess_StaticMethod_This/D.java @@ -0,0 +1,5 @@ +package D; + +public class D extends C.C { + protected D() {} +} diff --git a/Tests/A2/J1_6_ProtectedAccess_StaticMethod_This/Main.java b/Tests/A2/J1_6_ProtectedAccess_StaticMethod_This/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..61f9a63ebe35aad02612ec8e66aeabb003188ca8 --- /dev/null +++ b/Tests/A2/J1_6_ProtectedAccess_StaticMethod_This/Main.java @@ -0,0 +1,18 @@ +// HIERARCHY,TYPE_CHECKING +/* TypeChecking: + * + * Test for Protected Access + * + * B.B extends A.A + * C.C extends B.B + * D.D extends C.C + * + * see C.java + */ +public class Main { + public Main() {} + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/J1_InterfaceObject/Main.java b/Tests/A2/J1_InterfaceObject/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..a4fcab268f842580bddf4e8aee0067b7d60183c1 --- /dev/null +++ b/Tests/A2/J1_InterfaceObject/Main.java @@ -0,0 +1,11 @@ +// HIERARCHY,TYPE_CHECKING +import java.util.*; + +public class Main { + public Main() {} + + public static int test() { + Object x = (List)new LinkedList(); + return 123; + } +} diff --git a/Tests/A2/J1_InterfaceObject/java/util/Collection.java b/Tests/A2/J1_InterfaceObject/java/util/Collection.java new file mode 100644 index 0000000000000000000000000000000000000000..9be463e2a558b848d566ba3b86fdfbf3cd50ea2f --- /dev/null +++ b/Tests/A2/J1_InterfaceObject/java/util/Collection.java @@ -0,0 +1,4 @@ +package java.util; + +public interface Collection { +} diff --git a/Tests/A2/J1_InterfaceObject/java/util/LinkedList.java b/Tests/A2/J1_InterfaceObject/java/util/LinkedList.java new file mode 100644 index 0000000000000000000000000000000000000000..7b3f6328da16aee2b4618529a3132356a7cc34d3 --- /dev/null +++ b/Tests/A2/J1_InterfaceObject/java/util/LinkedList.java @@ -0,0 +1,32 @@ +package java.util; +public class LinkedList implements List { + protected boolean empty = true; + protected Object cur = null; + protected LinkedList next = null; + public LinkedList() { + } + public int size() { + if(empty) return 0; + else if(next == null) return 1; + else return 1+next.size(); + } + public boolean add(Object o) { + if(empty) { + cur = o; + empty = false; + } else { + if(next == null) { + next = new LinkedList(); + } + next.add(o); + } + return true; + } + public Object clone() { + LinkedList ret = new LinkedList(); + if(next != null) ret.next = (LinkedList) next.clone(); + ret.cur = cur; + ret.empty = empty; + return ret; + } +} diff --git a/Tests/A2/J1_InterfaceObject/java/util/List.java b/Tests/A2/J1_InterfaceObject/java/util/List.java new file mode 100644 index 0000000000000000000000000000000000000000..85fb05705a7940916c40e4771d37d87ec103dbaf --- /dev/null +++ b/Tests/A2/J1_InterfaceObject/java/util/List.java @@ -0,0 +1,4 @@ +package java.util; +public interface List extends Collection { + public int size(); +} diff --git a/Tests/A2/J1_SubType1/A.java b/Tests/A2/J1_SubType1/A.java new file mode 100644 index 0000000000000000000000000000000000000000..8561b088530ce3365df3efce5f1d95d091815bf7 --- /dev/null +++ b/Tests/A2/J1_SubType1/A.java @@ -0,0 +1,13 @@ +public class A { + + protected int t = 41; + + public A() { + t = t + 1; + } + + public int testA(){ + return t + 80; + } + +} diff --git a/Tests/A2/J1_SubType1/Main.java b/Tests/A2/J1_SubType1/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..1ab0302254099828513756f9aa346035b09380e4 --- /dev/null +++ b/Tests/A2/J1_SubType1/Main.java @@ -0,0 +1,25 @@ +// HIERARCHY +/* Hierarchy: + * A { + * int testA() + * } + * Main extends A { + * int testA() + * } + */ +public class Main extends A { + + public Main(){} + + public static int test() { + + A a = new Main(); + + return a.testA(); + + } + + public int testA(){ + return 123; + } +} diff --git a/Tests/A2/J1_SubType2/A.java b/Tests/A2/J1_SubType2/A.java new file mode 100644 index 0000000000000000000000000000000000000000..acd7b3496608f059ad8cc30d91b989420c03dafb --- /dev/null +++ b/Tests/A2/J1_SubType2/A.java @@ -0,0 +1,14 @@ +public class A { + + protected int t = 41; + + public A() { + t = t + 1; + } + + public int testA(){ + return t + 80; + } + +} + diff --git a/Tests/A2/J1_SubType2/Main.java b/Tests/A2/J1_SubType2/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..e5a984d13f92e2a21bfa3a7b93283a1ca62404c0 --- /dev/null +++ b/Tests/A2/J1_SubType2/Main.java @@ -0,0 +1,26 @@ +// HIERARCHY +/* Hierarchy: + * A { + * int testA() + * } + * Main extends A { + * int testA() + * } + */ +public class Main extends A { + + public Main(){} + + public static int test() { + + A a = null; + a = new Main(); + + return a.testA(); + + } + + public int testA(){ + return 123; + } +} diff --git a/Tests/A2/J1_abstract/A.java b/Tests/A2/J1_abstract/A.java new file mode 100644 index 0000000000000000000000000000000000000000..ab9b10578e67cb4c5ec23e0f8327e63f723498fa --- /dev/null +++ b/Tests/A2/J1_abstract/A.java @@ -0,0 +1,5 @@ +public abstract class A { + public A() {} + public abstract int m(); +} + diff --git a/Tests/A2/J1_abstract/B.java b/Tests/A2/J1_abstract/B.java new file mode 100644 index 0000000000000000000000000000000000000000..eee687f018bb8f258d8d3ca6b7cc54da53eaf1d1 --- /dev/null +++ b/Tests/A2/J1_abstract/B.java @@ -0,0 +1,7 @@ +public class B extends A { + public B() {} + public int m() { + return 123; + } +} + diff --git a/Tests/A2/J1_abstract/Main.java b/Tests/A2/J1_abstract/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..e53ef526b81c0e904f2dbb88616eb1c18062b19b --- /dev/null +++ b/Tests/A2/J1_abstract/Main.java @@ -0,0 +1,12 @@ +// HIERARCHY +/* + * The abstract class A declares the abstract method m() + * B extends A and implements A + */ +public class Main { + public Main() {} + public static int test() { + A a = new B(); + return a.m(); + } +} diff --git a/Tests/A2/J1_access_override2.java b/Tests/A2/J1_access_override2.java new file mode 100644 index 0000000000000000000000000000000000000000..68dc671f50d75f9dbe0bf30d106d696c42602044 --- /dev/null +++ b/Tests/A2/J1_access_override2.java @@ -0,0 +1,13 @@ +// HIERARCHY +public class J1_access_override2 { + + public J1_access_override2 () {} + + public Object clone() { return new J1_access_override2(); } + + public static int test() { + Object o = new J1_access_override2().clone(); + return 123; + } + +} diff --git a/Tests/A2/J1_arbitrarylocaldeclaration.java b/Tests/A2/J1_arbitrarylocaldeclaration.java new file mode 100644 index 0000000000000000000000000000000000000000..efbd8895bea27fb976208effcafbfd61e827b476 --- /dev/null +++ b/Tests/A2/J1_arbitrarylocaldeclaration.java @@ -0,0 +1,13 @@ +// PARSER_WEEDER,ENVIRONMENTS +public class J1_arbitrarylocaldeclaration { + public static int test() { + return new J1_arbitrarylocaldeclaration().m(); + } + public J1_arbitrarylocaldeclaration() {} + public int m() { + int x = 35; + x = x+1; + int y = x+87; + return y; + } +} diff --git a/Tests/A2/J1_assign_Object_to_Object.java b/Tests/A2/J1_assign_Object_to_Object.java new file mode 100644 index 0000000000000000000000000000000000000000..6052324fab8edaa4766a9f90f06f2683fe19c74d --- /dev/null +++ b/Tests/A2/J1_assign_Object_to_Object.java @@ -0,0 +1,14 @@ +// HIERARCHY,TYPE_CHECKING +public class J1_assign_Object_to_Object { + + public J1_assign_Object_to_Object(){} + + public static int test(){ + Object o1 = new Object(); + Object o2 = new Object(); + o2 = o1; + return 123; + + } + +} diff --git a/Tests/A2/J1_cast_to_same_type.java b/Tests/A2/J1_cast_to_same_type.java new file mode 100644 index 0000000000000000000000000000000000000000..9ebb68f25ed246da347fc2559e4ab2588e1c947f --- /dev/null +++ b/Tests/A2/J1_cast_to_same_type.java @@ -0,0 +1,13 @@ +// HIERARCHY,TYPE_CHECKING +public class J1_cast_to_same_type{ + + public J1_cast_to_same_type(){} + + public static int test(){ + + String s = "123"; + + return Integer.parseInt((String)s); + } + +} diff --git a/Tests/A2/J1_classextendsobject1.java b/Tests/A2/J1_classextendsobject1.java new file mode 100644 index 0000000000000000000000000000000000000000..b7e5c91c3427547bb1096091376bfcf1363e7554 --- /dev/null +++ b/Tests/A2/J1_classextendsobject1.java @@ -0,0 +1,10 @@ +// TYPE_LINKING,HIERARCHY +public class J1_classextendsobject1 extends Object { + + public J1_classextendsobject1() {} + + public static int test() { + return 123; + } + +} diff --git a/Tests/A2/J1_classextendsobject2.java b/Tests/A2/J1_classextendsobject2.java new file mode 100644 index 0000000000000000000000000000000000000000..cf8409a62a2d1f922f960acd8d499edc78bda29a --- /dev/null +++ b/Tests/A2/J1_classextendsobject2.java @@ -0,0 +1,10 @@ +// TYPE_LINKING,HIERARCHY +public class J1_classextendsobject2 extends java.lang.Object { + + public J1_classextendsobject2() {} + + public static int test() { + return 123; + } + +} diff --git a/Tests/A2/J1_classimplementsserializable1/Main.java b/Tests/A2/J1_classimplementsserializable1/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..a47a5027a4c690ffd745dd2648cb71f4dcb69be3 --- /dev/null +++ b/Tests/A2/J1_classimplementsserializable1/Main.java @@ -0,0 +1,11 @@ +// TYPE_LINKING,HIERARCHY +import java.io.Serializable; +public class Main implements Serializable { + + public Main() {} + + public static int test() { + return 123; + } + +} diff --git a/Tests/A2/J1_classimplementsserializable2/Main.java b/Tests/A2/J1_classimplementsserializable2/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..8edb193672bfbc4b3280331c5cf6965302d51086 --- /dev/null +++ b/Tests/A2/J1_classimplementsserializable2/Main.java @@ -0,0 +1,10 @@ +// TYPE_LINKING,HIERARCHY +public class Main implements java.io.Serializable { + + public Main() {} + + public static int test() { + return 123; + } + +} diff --git a/Tests/A2/J1_classimport/Main.java b/Tests/A2/J1_classimport/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..11ea63ed38576ff24c00eefc81a557b53a02aad7 --- /dev/null +++ b/Tests/A2/J1_classimport/Main.java @@ -0,0 +1,15 @@ +// TYPE_LINKING +import java.util.Vector; + +public class Main { + + public Main() {} + + protected Vector c; + + public static int test() { + return 123; + } + +} + diff --git a/Tests/A2/J1_classimport/java/util/Vector.java b/Tests/A2/J1_classimport/java/util/Vector.java new file mode 100644 index 0000000000000000000000000000000000000000..73c160dde58afe4b0878af14e5c1cc17e7a83e12 --- /dev/null +++ b/Tests/A2/J1_classimport/java/util/Vector.java @@ -0,0 +1,5 @@ +package java.util; +public class Vector { + public Vector() { + } +} diff --git a/Tests/A2/J1_constructorWithSameNameAsMethod.java b/Tests/A2/J1_constructorWithSameNameAsMethod.java new file mode 100644 index 0000000000000000000000000000000000000000..074eee44d5c5cc26102b46cfeaa27b49cfff64ec --- /dev/null +++ b/Tests/A2/J1_constructorWithSameNameAsMethod.java @@ -0,0 +1,14 @@ +// PARSER_WEEDER,HIERARCHY +public class J1_constructorWithSameNameAsMethod { + + public J1_constructorWithSameNameAsMethod () {} + + public int J1_constructorWithSameNameAsMethod () { + return 123; + } + + public static int test() { + return new J1_constructorWithSameNameAsMethod().J1_constructorWithSameNameAsMethod(); + } + +} diff --git a/Tests/A2/J1_fields/Bar.java b/Tests/A2/J1_fields/Bar.java new file mode 100644 index 0000000000000000000000000000000000000000..52d3a796145527a6d20278954a4cc390467d1cae --- /dev/null +++ b/Tests/A2/J1_fields/Bar.java @@ -0,0 +1,7 @@ +public class Bar { + + public Bar () {} + + public int j = 123; + +} diff --git a/Tests/A2/J1_fields/Main.java b/Tests/A2/J1_fields/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..2c9316f278d2b15aad8472a8ac24003b804b847f --- /dev/null +++ b/Tests/A2/J1_fields/Main.java @@ -0,0 +1,17 @@ +// HIERARCHY +/* + * Bar declares the public field 'j'. + */ +public class Main { + public Main() {} + + public static void main(String[] args) { + // System.out.println(test()); + } + + public static int test() { + Bar b = new Bar(); + int i = b.j; + return i; + } +} diff --git a/Tests/A2/J1_final_method_override1/Main.java b/Tests/A2/J1_final_method_override1/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..c3bfd223beabeb23a222ac98bf654d6614d37772 --- /dev/null +++ b/Tests/A2/J1_final_method_override1/Main.java @@ -0,0 +1,20 @@ +// HIERARCHY +/* A final method may not be overridden or hidden, + * but another method with the same name may be + * defined. */ + +public class Main extends foo{ + + public Main(){} + + public int bar(String s){ + return 123; + } + + public static int test(){ + + Main m = new Main(); + return m.bar("Hello World!"); + } + +} diff --git a/Tests/A2/J1_final_method_override1/foo.java b/Tests/A2/J1_final_method_override1/foo.java new file mode 100644 index 0000000000000000000000000000000000000000..4c214c6e40ee571435ddf1cf8d04a0261bc16549 --- /dev/null +++ b/Tests/A2/J1_final_method_override1/foo.java @@ -0,0 +1,9 @@ +public class foo{ + + public foo(){} + + public final int bar(int f){ + return f+1; + } + +} diff --git a/Tests/A2/J1_formal_with_same_name_as_field.java b/Tests/A2/J1_formal_with_same_name_as_field.java new file mode 100644 index 0000000000000000000000000000000000000000..237ee7688f7789ee682acec804bdcfd9afc050ac --- /dev/null +++ b/Tests/A2/J1_formal_with_same_name_as_field.java @@ -0,0 +1,21 @@ +// ENVIRONMENTS,DISAMBIGUATION +public class J1_formal_with_same_name_as_field{ + + protected String s = "Hello World!"; + + public J1_formal_with_same_name_as_field(){} + + public J1_formal_with_same_name_as_field(String s){} + + public int testerMethod(String s){ + + return 123; + } + + public static int test(){ + + J1_formal_with_same_name_as_field j = new J1_formal_with_same_name_as_field("Hello Wrold!"); + return j.testerMethod("Hello World!"); + } + +} diff --git a/Tests/A2/J1_formalindex.java b/Tests/A2/J1_formalindex.java new file mode 100644 index 0000000000000000000000000000000000000000..6349c8efd1a18ac4ad041f48224eec062cb26b60 --- /dev/null +++ b/Tests/A2/J1_formalindex.java @@ -0,0 +1,22 @@ +// ENVIRONMENTS,DISAMBIGUATION +public class J1_formalindex { + + protected int field; + + public J1_formalindex() { + } + + public J1_formalindex(int a, int b, int c, int d, int e) { + this.field = foo(a,b,c,d,e); + } + + protected int foo(int a, int b, int c, int d, int e) { + int local = a * c; + return local+e; + } + + public static int test() { + return new J1_formalindex(11,42,2,88,101).field; + } + +} diff --git a/Tests/A2/J1_hierachyCheck14/Main.java b/Tests/A2/J1_hierachyCheck14/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..0d195353e4d51b6933a71d2046c164f5b0a310a0 --- /dev/null +++ b/Tests/A2/J1_hierachyCheck14/Main.java @@ -0,0 +1,16 @@ +// HIERARCHY +/* +A type must not inherit two fields with the same name +(extra Joos restriction) - but may hide... +*/ + +public class Main { + + public Main() {} + + public static int test() { + foo f = new foo(); + return 123; + } + +} diff --git a/Tests/A2/J1_hierachyCheck14/bar.java b/Tests/A2/J1_hierachyCheck14/bar.java new file mode 100644 index 0000000000000000000000000000000000000000..9f59acbb3d91afd695471677a0d1703b599a24e0 --- /dev/null +++ b/Tests/A2/J1_hierachyCheck14/bar.java @@ -0,0 +1,7 @@ +public class bar extends Object { + + public String x; + + public bar() {} + +} diff --git a/Tests/A2/J1_hierachyCheck14/foo.java b/Tests/A2/J1_hierachyCheck14/foo.java new file mode 100644 index 0000000000000000000000000000000000000000..716062acdf204eebc4e64e3b42edfff1ec5b4493 --- /dev/null +++ b/Tests/A2/J1_hierachyCheck14/foo.java @@ -0,0 +1,7 @@ +public class foo extends bar { + + public int x; + + public foo() {} + +} diff --git a/Tests/A2/J1_hierachyCheck28/Main.java b/Tests/A2/J1_hierachyCheck28/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..7d6dc2436502d01f60f21e639546cdcacf26d913 --- /dev/null +++ b/Tests/A2/J1_hierachyCheck28/Main.java @@ -0,0 +1,14 @@ +// HIERARCHY +import java.util.*; + +// abstract classes are allowed not to implement any methods from an interface + +public abstract class Main implements Set{ + + public Main () {} + + public static int test() { + return 123; + } + +} diff --git a/Tests/A2/J1_hierachyCheck28/java/util/Collection.java b/Tests/A2/J1_hierachyCheck28/java/util/Collection.java new file mode 100644 index 0000000000000000000000000000000000000000..9be463e2a558b848d566ba3b86fdfbf3cd50ea2f --- /dev/null +++ b/Tests/A2/J1_hierachyCheck28/java/util/Collection.java @@ -0,0 +1,4 @@ +package java.util; + +public interface Collection { +} diff --git a/Tests/A2/J1_hierachyCheck28/java/util/Set.java b/Tests/A2/J1_hierachyCheck28/java/util/Set.java new file mode 100644 index 0000000000000000000000000000000000000000..f106e7533984b05c9cb43b0fc6af5ed8ce8f7438 --- /dev/null +++ b/Tests/A2/J1_hierachyCheck28/java/util/Set.java @@ -0,0 +1,4 @@ +package java.util; +public interface Set extends Collection { + public boolean addAll(Collection c); +} diff --git a/Tests/A2/J1_hierachyCheck29/Main.java b/Tests/A2/J1_hierachyCheck29/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..9a4c453f531df2af87af9233b4afcaa8af99724e --- /dev/null +++ b/Tests/A2/J1_hierachyCheck29/Main.java @@ -0,0 +1,18 @@ +// HIERARCHY +import java.util.*; + +// abstract classes are allowed to implement only some methods from an interface + +public abstract class Main implements Set{ + + public Main () {} + + public static int test() { + return 123; + } + + public void clear() { + int i = 8; + } + +} diff --git a/Tests/A2/J1_hierachyCheck29/java/util/Collection.java b/Tests/A2/J1_hierachyCheck29/java/util/Collection.java new file mode 100644 index 0000000000000000000000000000000000000000..9be463e2a558b848d566ba3b86fdfbf3cd50ea2f --- /dev/null +++ b/Tests/A2/J1_hierachyCheck29/java/util/Collection.java @@ -0,0 +1,4 @@ +package java.util; + +public interface Collection { +} diff --git a/Tests/A2/J1_hierachyCheck29/java/util/Set.java b/Tests/A2/J1_hierachyCheck29/java/util/Set.java new file mode 100644 index 0000000000000000000000000000000000000000..f106e7533984b05c9cb43b0fc6af5ed8ce8f7438 --- /dev/null +++ b/Tests/A2/J1_hierachyCheck29/java/util/Set.java @@ -0,0 +1,4 @@ +package java.util; +public interface Set extends Collection { + public boolean addAll(Collection c); +} diff --git a/Tests/A2/J1_hierachyCheck31/Main.java b/Tests/A2/J1_hierachyCheck31/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..c50dc45822c491a530f88ef05114bffe3d95c79c --- /dev/null +++ b/Tests/A2/J1_hierachyCheck31/Main.java @@ -0,0 +1,16 @@ +// HIERARCHY +/* +A type must not inherit two different fields with the same name, but +may hide fields in odd ways. +*/ + +public class Main { + + public Main() {} + + public static int test() { + foo f = new foo(); + return 123; + } + +} diff --git a/Tests/A2/J1_hierachyCheck31/bar.java b/Tests/A2/J1_hierachyCheck31/bar.java new file mode 100644 index 0000000000000000000000000000000000000000..81134d9fe14946b61085c485c797a62b80b5cdd0 --- /dev/null +++ b/Tests/A2/J1_hierachyCheck31/bar.java @@ -0,0 +1,7 @@ +public class bar extends boz { + + public char x; + + public bar() {} + +} diff --git a/Tests/A2/J1_hierachyCheck31/boz.java b/Tests/A2/J1_hierachyCheck31/boz.java new file mode 100644 index 0000000000000000000000000000000000000000..3eeb031f7f7ef80a3b34ef5b2edb3ffc6da4e178 --- /dev/null +++ b/Tests/A2/J1_hierachyCheck31/boz.java @@ -0,0 +1,7 @@ +public class boz { + + public String x; + + public boz () {} + +} diff --git a/Tests/A2/J1_hierachyCheck31/foo.java b/Tests/A2/J1_hierachyCheck31/foo.java new file mode 100644 index 0000000000000000000000000000000000000000..716062acdf204eebc4e64e3b42edfff1ec5b4493 --- /dev/null +++ b/Tests/A2/J1_hierachyCheck31/foo.java @@ -0,0 +1,7 @@ +public class foo extends bar { + + public int x; + + public foo() {} + +} diff --git a/Tests/A2/J1_implicitsuper/Bar.java b/Tests/A2/J1_implicitsuper/Bar.java new file mode 100644 index 0000000000000000000000000000000000000000..20501935934a2e6746c2e131c33a8d7f83fedc71 --- /dev/null +++ b/Tests/A2/J1_implicitsuper/Bar.java @@ -0,0 +1,7 @@ +public class Bar { + protected int field; + + public Bar() { + field=123; + } +} diff --git a/Tests/A2/J1_implicitsuper/Foo.java b/Tests/A2/J1_implicitsuper/Foo.java new file mode 100644 index 0000000000000000000000000000000000000000..3add76ab999833e3638211c78542a52914fdce17 --- /dev/null +++ b/Tests/A2/J1_implicitsuper/Foo.java @@ -0,0 +1,6 @@ +public class Foo extends Bar { + public Foo() {} + public int foo() { + return field; + } +} diff --git a/Tests/A2/J1_implicitsuper/Main.java b/Tests/A2/J1_implicitsuper/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..19a386f2e1ac3624a0ab7c9453c55b494dcb8034 --- /dev/null +++ b/Tests/A2/J1_implicitsuper/Main.java @@ -0,0 +1,13 @@ +// HIERARCHY +/* + * Foo extends Bar, Bar declares the int field 'field', + * which is inherited by Foo. + */ +public class Main { + public Main() { } + public static int test() { + Foo foo = new Foo(); + return foo.field; + } +} + diff --git a/Tests/A2/J1_importName10.java b/Tests/A2/J1_importName10.java new file mode 100644 index 0000000000000000000000000000000000000000..c7ed1b1b60869cd2498f1a0112515d109a84e84f --- /dev/null +++ b/Tests/A2/J1_importName10.java @@ -0,0 +1,14 @@ +// TYPE_LINKING +import java.io.*; +import java.io.*; + +public class J1_importName10 { + + public J1_importName10 () {} + + public static int test() { + PrintStream p = java.lang.System.out; + return 123; + } + +} diff --git a/Tests/A2/J1_importName11.java b/Tests/A2/J1_importName11.java new file mode 100644 index 0000000000000000000000000000000000000000..636a3960571a8eff7f09f2e671ad4b4906182a54 --- /dev/null +++ b/Tests/A2/J1_importName11.java @@ -0,0 +1,13 @@ +// TYPE_LINKING +import java.lang.*; + +public class J1_importName11 { + + public J1_importName11 () {} + + public static int test() { + java.io.PrintStream o = System.out; + return 123; + } + +} diff --git a/Tests/A2/J1_importName9.java b/Tests/A2/J1_importName9.java new file mode 100644 index 0000000000000000000000000000000000000000..f997920db68ff0e2be446d613c07fb42785b54af --- /dev/null +++ b/Tests/A2/J1_importName9.java @@ -0,0 +1,17 @@ +// TYPE_LINKING +import java.lang.*; +import java.lang.*; +import java.lang.*; +import java.io.*; +import java.io.*; + +public class J1_importName9 { + + public J1_importName9 () {} + + public static int test() { + PrintStream p = java.lang.System.out; + return 123; + } + +} diff --git a/Tests/A2/J1_importNameLookup1/Main.java b/Tests/A2/J1_importNameLookup1/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..58be545351d2785496d9a738d577d42ccb1a7c7b --- /dev/null +++ b/Tests/A2/J1_importNameLookup1/Main.java @@ -0,0 +1,25 @@ +// TYPE_LINKING +/* +Unqualified names are handled by these rules: +1. try the enclosing class or interface +2. try any single-type-import (A.B.C.D) +3. try the same package +4. try any import-on-demand package (A.B.C.*) including java.lang.* +*/ + +// This testcase is supposed to test 2 vs. 4 +import baz.foo; +import bar.*; + +public class Main { + + public Main() {} + + public static int test() { + return new foo().x; + } + + public static void main(String[] args) { + System.out.println(""+Main.test()); + } +} diff --git a/Tests/A2/J1_importNameLookup1/bar/foo.java b/Tests/A2/J1_importNameLookup1/bar/foo.java new file mode 100644 index 0000000000000000000000000000000000000000..227655fe3fcc561dad5ab9d6ac87347534a3b1cd --- /dev/null +++ b/Tests/A2/J1_importNameLookup1/bar/foo.java @@ -0,0 +1,12 @@ +package bar; + +public class foo { + + public int x; + + public foo() { + x = 7; + } + +} + diff --git a/Tests/A2/J1_importNameLookup1/baz/foo.java b/Tests/A2/J1_importNameLookup1/baz/foo.java new file mode 100644 index 0000000000000000000000000000000000000000..51e9bba20a1bfc152695557195598ff23f9d182c --- /dev/null +++ b/Tests/A2/J1_importNameLookup1/baz/foo.java @@ -0,0 +1,11 @@ +package baz; + +public class foo { + + public int x; + + public foo() { + x = 123; + } +} + diff --git a/Tests/A2/J1_importNameLookup2/Main.java b/Tests/A2/J1_importNameLookup2/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..85374db2c7a9e722f7361443055612889903811d --- /dev/null +++ b/Tests/A2/J1_importNameLookup2/Main.java @@ -0,0 +1,25 @@ +// TYPE_LINKING + +/* +Unqualified names are handled by these rules: +1. try the enclosing class or interface +2. try any single-type-import (A.B.C.D) +3. try the same package +4. try any import-on-demand package (A.B.C.*) including java.lang.* +*/ + +// This testcase is supposed to test 2 vs. 3 +import bar.foo; + +public class Main { + + public Main() {} + + public static int test() { + return new foo().x; + } + + public static void main(String[] args) { + System.out.println(""+Main.test()); + } +} diff --git a/Tests/A2/J1_importNameLookup2/bar/foo.java b/Tests/A2/J1_importNameLookup2/bar/foo.java new file mode 100644 index 0000000000000000000000000000000000000000..27b5790726fddea88c1e97df35ddeae5e89707be --- /dev/null +++ b/Tests/A2/J1_importNameLookup2/bar/foo.java @@ -0,0 +1,12 @@ +package bar; + +public class foo { + + public int x; + + public foo() { + x = 123; + } + +} + diff --git a/Tests/A2/J1_importNameLookup2/foo.java b/Tests/A2/J1_importNameLookup2/foo.java new file mode 100644 index 0000000000000000000000000000000000000000..a21a2f8dfeb7e2cc799cc29e2dc67c19f35e9529 --- /dev/null +++ b/Tests/A2/J1_importNameLookup2/foo.java @@ -0,0 +1,9 @@ +public class foo { + + public int x; + + public foo() { + x = 7; + } +} + diff --git a/Tests/A2/J1_importNameLookup3/Main.java b/Tests/A2/J1_importNameLookup3/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..de2139901fc249d9da34fc1120e50d86a8857c0c --- /dev/null +++ b/Tests/A2/J1_importNameLookup3/Main.java @@ -0,0 +1,23 @@ +// TYPE_LINKING +/* +Unqualified names are handled by these rules: +1. try the enclosing class or interface +2. try any single-type-import (A.B.C.D) +3. try the same package +4. try any import-on-demand package (A.B.C.*) including java.lang.* +*/ + +// This testcase is supposed to test 1 vs. 4 +public class Main { + + public Main() {} + + public static int test() { + return new foo().getX(); + } + + public static void main(String[] args) { + System.out.println(""+Main.test()); + } + +} diff --git a/Tests/A2/J1_importNameLookup3/bar/foo.java b/Tests/A2/J1_importNameLookup3/bar/foo.java new file mode 100644 index 0000000000000000000000000000000000000000..227655fe3fcc561dad5ab9d6ac87347534a3b1cd --- /dev/null +++ b/Tests/A2/J1_importNameLookup3/bar/foo.java @@ -0,0 +1,12 @@ +package bar; + +public class foo { + + public int x; + + public foo() { + x = 7; + } + +} + diff --git a/Tests/A2/J1_importNameLookup3/foo.java b/Tests/A2/J1_importNameLookup3/foo.java new file mode 100644 index 0000000000000000000000000000000000000000..9480c178ee1ed6cfb490ace777597fde3bc56fc9 --- /dev/null +++ b/Tests/A2/J1_importNameLookup3/foo.java @@ -0,0 +1,16 @@ +import bar.*; + +public class foo { + + public int x; + + public foo() { + x = 123; + } + + public int getX() { + foo f = new foo(); + return f.x; + } +} + diff --git a/Tests/A2/J1_importNameLookup4/Main.java b/Tests/A2/J1_importNameLookup4/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..07ddbe01966a7d15c8ef4a4384987a041a995129 --- /dev/null +++ b/Tests/A2/J1_importNameLookup4/Main.java @@ -0,0 +1,25 @@ +// TYPE_LINKING + +/* +Unqualified names are handled by these rules: +1. try the enclosing class or interface +2. try any single-type-import (A.B.C.D) +3. try the same package +4. try any import-on-demand package (A.B.C.*) including java.lang.* +*/ + +// This testcase is supposed to test 2 vs. 4 +import bar.*; + +public class Main { + + public Main() {} + + public static int test() { + return new foo().x; + } + + public static void main(String[] args) { + System.out.println(""+Main.test()); + } +} diff --git a/Tests/A2/J1_importNameLookup4/bar/foo.java b/Tests/A2/J1_importNameLookup4/bar/foo.java new file mode 100644 index 0000000000000000000000000000000000000000..227655fe3fcc561dad5ab9d6ac87347534a3b1cd --- /dev/null +++ b/Tests/A2/J1_importNameLookup4/bar/foo.java @@ -0,0 +1,12 @@ +package bar; + +public class foo { + + public int x; + + public foo() { + x = 7; + } + +} + diff --git a/Tests/A2/J1_importNameLookup4/foo.java b/Tests/A2/J1_importNameLookup4/foo.java new file mode 100644 index 0000000000000000000000000000000000000000..ec0e506b8f057e986cea3cbe5416828a3e6720bd --- /dev/null +++ b/Tests/A2/J1_importNameLookup4/foo.java @@ -0,0 +1,9 @@ +public class foo { + + public int x; + + public foo() { + x = 123; + } +} + diff --git a/Tests/A2/J1_importNameLookup5/Main.java b/Tests/A2/J1_importNameLookup5/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..3ab83bc6e3bf8f3d66a390d7b927bd50a534a36b --- /dev/null +++ b/Tests/A2/J1_importNameLookup5/Main.java @@ -0,0 +1,25 @@ +// TYPE_LINKING + +/* +Unqualified names are handled by these rules: +1. try the enclosing class or interface +2. try any single-type-import (A.B.C.D) +3. try the same package +4. try any import-on-demand package (A.B.C.*) including java.lang.* +*/ + +// This testcase is supposed to test 2 vs. 5 +import bar.System; + +public class Main { + + public Main() {} + + public static int test() { + return new System().x; + } + + public static void main(String[] args) { + // System.out.println(""+Main.test()); + } +} diff --git a/Tests/A2/J1_importNameLookup5/bar/System.java b/Tests/A2/J1_importNameLookup5/bar/System.java new file mode 100644 index 0000000000000000000000000000000000000000..c0d16fd57b8435237a2539427a8d6202455e2fc7 --- /dev/null +++ b/Tests/A2/J1_importNameLookup5/bar/System.java @@ -0,0 +1,12 @@ +package bar; + +public class System { + + public int x; + + public System() { + x = 123; + } + +} + diff --git a/Tests/A2/J1_importNameLookup6/Main.java b/Tests/A2/J1_importNameLookup6/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..2225c196f24a406a86e28e588b1e814a75b147c4 --- /dev/null +++ b/Tests/A2/J1_importNameLookup6/Main.java @@ -0,0 +1,24 @@ +// TYPE_LINKING +import bar.*; + +/* +Unqualified names are handled by these rules: +1. try the enclosing class or interface +2. try any single-type-import (A.B.C.D) +3. try the same package +4. try any import-on-demand package (A.B.C.*) including java.lang.* +*/ + +// This testcase is supposed to test 3 vs. 4 +public class Main { + + public Main() {} + + public static int test() { + return new foo().x; + } + + public static void main(String[] args) { + System.out.println(""+Main.test()); + } +} diff --git a/Tests/A2/J1_importNameLookup6/bar/foo.java b/Tests/A2/J1_importNameLookup6/bar/foo.java new file mode 100644 index 0000000000000000000000000000000000000000..227655fe3fcc561dad5ab9d6ac87347534a3b1cd --- /dev/null +++ b/Tests/A2/J1_importNameLookup6/bar/foo.java @@ -0,0 +1,12 @@ +package bar; + +public class foo { + + public int x; + + public foo() { + x = 7; + } + +} + diff --git a/Tests/A2/J1_importNameLookup6/foo.java b/Tests/A2/J1_importNameLookup6/foo.java new file mode 100644 index 0000000000000000000000000000000000000000..ec0e506b8f057e986cea3cbe5416828a3e6720bd --- /dev/null +++ b/Tests/A2/J1_importNameLookup6/foo.java @@ -0,0 +1,9 @@ +public class foo { + + public int x; + + public foo() { + x = 123; + } +} + diff --git a/Tests/A2/J1_importNameLookup7/Main.java b/Tests/A2/J1_importNameLookup7/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..0aebdb56a9caa3930361c9b417fa7b936499f182 --- /dev/null +++ b/Tests/A2/J1_importNameLookup7/Main.java @@ -0,0 +1,22 @@ +// TYPE_LINKING +/* +Unqualified names are handled by these rules: +1. try the enclosing class or interface +2. try any single-type-import (A.B.C.D) +3. try the same package +4. try any import-on-demand package (A.B.C.*) including java.lang.* +*/ + +// This testcase is supposed to test 3 vs. 4 - java.lang.* +public class Main { + + public Main() {} + + public static int test() { + return new System().x; + } + + public static void main(String[] args) { + // System.out.println(""+Main.test()); + } +} diff --git a/Tests/A2/J1_importNameLookup7/System.java b/Tests/A2/J1_importNameLookup7/System.java new file mode 100644 index 0000000000000000000000000000000000000000..862c1a1de3709b7d1e7cde058a2b3c6056a98e9d --- /dev/null +++ b/Tests/A2/J1_importNameLookup7/System.java @@ -0,0 +1,9 @@ +public class System { + + public int x; + + public System() { + x = 123; + } +} + diff --git a/Tests/A2/J1_inherited_hashcode.java b/Tests/A2/J1_inherited_hashcode.java new file mode 100644 index 0000000000000000000000000000000000000000..fd12a4111532a27c01ab1f1f05da17502960343e --- /dev/null +++ b/Tests/A2/J1_inherited_hashcode.java @@ -0,0 +1,10 @@ +// HIERARCHY +public class J1_inherited_hashcode { + public J1_inherited_hashcode() {} + public static int test() { + return 123 + new J1_inherited_hashcode().foo(); + } + public int foo() { + return hashCode() - this.hashCode(); + } +} diff --git a/Tests/A2/J1_instance_method_hide1/Main.java b/Tests/A2/J1_instance_method_hide1/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..76f5f9503d158d068a1a10c16e33c87979138a37 --- /dev/null +++ b/Tests/A2/J1_instance_method_hide1/Main.java @@ -0,0 +1,18 @@ +// HIERARCHY +/* A static method must not hide an instance method, + * but a new method with the same name may be defined. */ + +public class Main extends foo{ + + public Main(){} + + public static int bar(String s){ + return 123; + } + + public static int test(){ + + return Main.bar("Hello World!"); + } + +} diff --git a/Tests/A2/J1_instance_method_hide1/foo.java b/Tests/A2/J1_instance_method_hide1/foo.java new file mode 100644 index 0000000000000000000000000000000000000000..1ffd9a27211091215b47f952f4d024f72110f8eb --- /dev/null +++ b/Tests/A2/J1_instance_method_hide1/foo.java @@ -0,0 +1,9 @@ +public class foo{ + + public foo(){} + + public int bar(int f){ + return f+1; + } + +} diff --git a/Tests/A2/J1_interfaceassignable/Main.java b/Tests/A2/J1_interfaceassignable/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..e2b8fad9d1bf3c57b3536886efedba6b081d759c --- /dev/null +++ b/Tests/A2/J1_interfaceassignable/Main.java @@ -0,0 +1,11 @@ +// HIERARCHY,TYPE_CHECKING +public class Main { + + public Main () {} + + public static int test() { + java.lang.Object o = (java.util.List)new java.util.LinkedList(); + return 123; + } + +} diff --git a/Tests/A2/J1_interfaceassignable/java/util/Collection.java b/Tests/A2/J1_interfaceassignable/java/util/Collection.java new file mode 100644 index 0000000000000000000000000000000000000000..9be463e2a558b848d566ba3b86fdfbf3cd50ea2f --- /dev/null +++ b/Tests/A2/J1_interfaceassignable/java/util/Collection.java @@ -0,0 +1,4 @@ +package java.util; + +public interface Collection { +} diff --git a/Tests/A2/J1_interfaceassignable/java/util/LinkedList.java b/Tests/A2/J1_interfaceassignable/java/util/LinkedList.java new file mode 100644 index 0000000000000000000000000000000000000000..7b3f6328da16aee2b4618529a3132356a7cc34d3 --- /dev/null +++ b/Tests/A2/J1_interfaceassignable/java/util/LinkedList.java @@ -0,0 +1,32 @@ +package java.util; +public class LinkedList implements List { + protected boolean empty = true; + protected Object cur = null; + protected LinkedList next = null; + public LinkedList() { + } + public int size() { + if(empty) return 0; + else if(next == null) return 1; + else return 1+next.size(); + } + public boolean add(Object o) { + if(empty) { + cur = o; + empty = false; + } else { + if(next == null) { + next = new LinkedList(); + } + next.add(o); + } + return true; + } + public Object clone() { + LinkedList ret = new LinkedList(); + if(next != null) ret.next = (LinkedList) next.clone(); + ret.cur = cur; + ret.empty = empty; + return ret; + } +} diff --git a/Tests/A2/J1_interfaceassignable/java/util/List.java b/Tests/A2/J1_interfaceassignable/java/util/List.java new file mode 100644 index 0000000000000000000000000000000000000000..85fb05705a7940916c40e4771d37d87ec103dbaf --- /dev/null +++ b/Tests/A2/J1_interfaceassignable/java/util/List.java @@ -0,0 +1,4 @@ +package java.util; +public interface List extends Collection { + public int size(); +} diff --git a/Tests/A2/J1_local_duplicate.java b/Tests/A2/J1_local_duplicate.java new file mode 100644 index 0000000000000000000000000000000000000000..a4ccc1a7ce746c5bbf072bec25ad016b572520ea --- /dev/null +++ b/Tests/A2/J1_local_duplicate.java @@ -0,0 +1,11 @@ +// ENVIRONMENTS +public class J1_local_duplicate { + public J1_local_duplicate() {} + protected int r = 456; + public static int test() { + {{ + int r = 123; + return r; + }} + } +} diff --git a/Tests/A2/J1_localvariablescope.java b/Tests/A2/J1_localvariablescope.java new file mode 100644 index 0000000000000000000000000000000000000000..072aa2ef07a3812bc999a5efd27ec64505b60038 --- /dev/null +++ b/Tests/A2/J1_localvariablescope.java @@ -0,0 +1,40 @@ +// ENVIRONMENTS +public class J1_localvariablescope { + + public Object o; + + public J1_localvariablescope () { + { + { Object o = new Object(); } + { + { Object o = new Object(); } + { Object o = new Object(); } + } + { Object o = new Object(); } + Object o = new Object(); + } + Object o = new Object(); + } + + public static Object m() { + { + { Object o = new Object(); } + { + { Object o = new Object(); } + { Object o = new Object(); } + } + { Object o = new Object(); } + Object o = new Object(); + } + Object o = new Object(); + return o; + } + + public static int test() { + Object o = null; + o = new J1_localvariablescope(); + o = J1_localvariablescope.m(); + return 123; + } + +} diff --git a/Tests/A2/J1_name/J1_name/J1_name.java b/Tests/A2/J1_name/J1_name/J1_name.java new file mode 100644 index 0000000000000000000000000000000000000000..5f733ba0e97df12d2767976d425b5e059ea7155d --- /dev/null +++ b/Tests/A2/J1_name/J1_name/J1_name.java @@ -0,0 +1,18 @@ +package J1_name; + +import J1_name.*; + +public class J1_name { + public int J1_name; + + public J1_name() {} + + public int test() { + J1_name = 7; + this.J1_name = 9; + (new J1_name()).J1_name = 42; + new J1_name().J1_name = 2; + return 123; + } + +} diff --git a/Tests/A2/J1_name/Main.java b/Tests/A2/J1_name/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..e0e553490f0c4903018d6b57a0b3c2cf8d972ac8 --- /dev/null +++ b/Tests/A2/J1_name/Main.java @@ -0,0 +1,13 @@ +// TYPE_LINKING +import J1_name.*; + +public class Main { + + public Main () {} + + public static int test() { + J1_name j = new J1_name(); + return 123; + } + +} diff --git a/Tests/A2/J1_noduplicatefield.java b/Tests/A2/J1_noduplicatefield.java new file mode 100644 index 0000000000000000000000000000000000000000..d69cc983e59c52f5ae12bcd58f98ec9b77c89393 --- /dev/null +++ b/Tests/A2/J1_noduplicatefield.java @@ -0,0 +1,9 @@ +// ENVIRONMENTS +public class J1_noduplicatefield { + public int foo; + public int bar; + public int FOO; + + public J1_noduplicatefield() { } + public static int test() { return 123; } +} diff --git a/Tests/A2/J1_on_demand_imports_clash/Main.java b/Tests/A2/J1_on_demand_imports_clash/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..e26c7f6ff8346c247b6a73323c21d04b53cea5da --- /dev/null +++ b/Tests/A2/J1_on_demand_imports_clash/Main.java @@ -0,0 +1,19 @@ +// TYPE_LINKING +/* Check that all simple type names resolve uniquely, + * i.e. not to types from more than one import-on-demand + * declaration. + * OK, but what if we don't use it? */ + +import foo.*; +import bar.*; + +public class Main{ + + public Main(){} + + public static int test(){ + + return 123; + } + +} diff --git a/Tests/A2/J1_on_demand_imports_clash/bar/Baz.java b/Tests/A2/J1_on_demand_imports_clash/bar/Baz.java new file mode 100644 index 0000000000000000000000000000000000000000..6212a73f8f4421d114ddec69f2735f1e66d140db --- /dev/null +++ b/Tests/A2/J1_on_demand_imports_clash/bar/Baz.java @@ -0,0 +1,11 @@ +package bar; + +public class Baz{ + + public Baz(){} + + public int test(){ + return 123; + } + +} diff --git a/Tests/A2/J1_on_demand_imports_clash/foo/Baz.java b/Tests/A2/J1_on_demand_imports_clash/foo/Baz.java new file mode 100644 index 0000000000000000000000000000000000000000..53aa9433b93bed56ac2d3517f3d890b9f038211d --- /dev/null +++ b/Tests/A2/J1_on_demand_imports_clash/foo/Baz.java @@ -0,0 +1,11 @@ +package foo; + +public class Baz{ + + public Baz(){} + + public int test(){ + return 123; + } + +} diff --git a/Tests/A2/J1_package/Main.java b/Tests/A2/J1_package/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..d3b520290df6fd5d5532f593dfcd3f0073a3f602 --- /dev/null +++ b/Tests/A2/J1_package/Main.java @@ -0,0 +1,11 @@ +// TYPE_LINKING +public class Main { + + public Main() {} + + public static int test() { + dovs.joos.features.J1_package obj = new dovs.joos.features.J1_package(); + return obj.test(); + } + +} diff --git a/Tests/A2/J1_package/dovs/joos/features/J1_package.java b/Tests/A2/J1_package/dovs/joos/features/J1_package.java new file mode 100644 index 0000000000000000000000000000000000000000..14cfd2324403e7ed4a5aa27bf7020b9d019a4f6a --- /dev/null +++ b/Tests/A2/J1_package/dovs/joos/features/J1_package.java @@ -0,0 +1,12 @@ +package dovs.joos.features; + +public class J1_package { + + public J1_package() {} + + public int test() { + return 123; + } + +} + diff --git a/Tests/A2/J1_packageimport/Main.java b/Tests/A2/J1_packageimport/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..5f5642b691dacaa61a463ddacbc83cc457436a9a --- /dev/null +++ b/Tests/A2/J1_packageimport/Main.java @@ -0,0 +1,15 @@ +// TYPE_LINKING +import java.util.*; + +public class Main { + + public Main() {} + + protected Vector c; + + public static int test() { + return 123; + } + +} + diff --git a/Tests/A2/J1_packageimport/java/util/Vector.java b/Tests/A2/J1_packageimport/java/util/Vector.java new file mode 100644 index 0000000000000000000000000000000000000000..73c160dde58afe4b0878af14e5c1cc17e7a83e12 --- /dev/null +++ b/Tests/A2/J1_packageimport/java/util/Vector.java @@ -0,0 +1,5 @@ +package java.util; +public class Vector { + public Vector() { + } +} diff --git a/Tests/A2/J1_public_method_protected_override1/Main.java b/Tests/A2/J1_public_method_protected_override1/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..91aa08fb77f585b2a3237914fe652268c82eb0d5 --- /dev/null +++ b/Tests/A2/J1_public_method_protected_override1/Main.java @@ -0,0 +1,19 @@ +// HIERARCHY +/* A protected method must not override a public method, + * but a new method with the same name may be defined. */ + +public class Main extends foo{ + + public Main(){} + + protected int bar(String s){ + return 123; + } + + public static int test(){ + + Main m = new Main(); + return m.bar("Hello World!"); + } + +} diff --git a/Tests/A2/J1_public_method_protected_override1/foo.java b/Tests/A2/J1_public_method_protected_override1/foo.java new file mode 100644 index 0000000000000000000000000000000000000000..1ffd9a27211091215b47f952f4d024f72110f8eb --- /dev/null +++ b/Tests/A2/J1_public_method_protected_override1/foo.java @@ -0,0 +1,9 @@ +public class foo{ + + public foo(){} + + public int bar(int f){ + return f+1; + } + +} diff --git a/Tests/A2/J1_resolvetype2/Main.java b/Tests/A2/J1_resolvetype2/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..a7e5bd090113ef75e17075b3f696c750b6ba915f --- /dev/null +++ b/Tests/A2/J1_resolvetype2/Main.java @@ -0,0 +1,8 @@ +// TYPE_LINKING +public class Main { + public Main() { } + public static int test() { + java.util.List l = null; + return 123; + } +} diff --git a/Tests/A2/J1_resolvetype2/java/util/Collection.java b/Tests/A2/J1_resolvetype2/java/util/Collection.java new file mode 100644 index 0000000000000000000000000000000000000000..9be463e2a558b848d566ba3b86fdfbf3cd50ea2f --- /dev/null +++ b/Tests/A2/J1_resolvetype2/java/util/Collection.java @@ -0,0 +1,4 @@ +package java.util; + +public interface Collection { +} diff --git a/Tests/A2/J1_resolvetype2/java/util/List.java b/Tests/A2/J1_resolvetype2/java/util/List.java new file mode 100644 index 0000000000000000000000000000000000000000..85fb05705a7940916c40e4771d37d87ec103dbaf --- /dev/null +++ b/Tests/A2/J1_resolvetype2/java/util/List.java @@ -0,0 +1,4 @@ +package java.util; +public interface List extends Collection { + public int size(); +} diff --git a/Tests/A2/J1_resolvetype3/Foo.java b/Tests/A2/J1_resolvetype3/Foo.java new file mode 100644 index 0000000000000000000000000000000000000000..a97539820f93d44d8f9efcba627bf7d2eea4f7c9 --- /dev/null +++ b/Tests/A2/J1_resolvetype3/Foo.java @@ -0,0 +1,3 @@ +public class Foo { + public Foo() { } +} diff --git a/Tests/A2/J1_resolvetype3/Main.java b/Tests/A2/J1_resolvetype3/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..e8c839c09fc7f379cfdcbf55ee699c32f9c3e12a --- /dev/null +++ b/Tests/A2/J1_resolvetype3/Main.java @@ -0,0 +1,8 @@ +// TYPE_LINKING +public class Main { + public Main() { } + public static int test() { + Foo foo = new Foo(); + return 123; + } +} diff --git a/Tests/A2/J1_resolvetype4/Main.java b/Tests/A2/J1_resolvetype4/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..fc20367aee4a4913eaf619b0af485b1bd9bdd81a --- /dev/null +++ b/Tests/A2/J1_resolvetype4/Main.java @@ -0,0 +1,10 @@ +// TYPE_LINKING +import pack.*; + +public class Main { + public Main() { } + public static int test() { + Foo foo = new Foo(); + return 123; + } +} diff --git a/Tests/A2/J1_resolvetype4/pack/Foo.java b/Tests/A2/J1_resolvetype4/pack/Foo.java new file mode 100644 index 0000000000000000000000000000000000000000..c45ac0d1771724f1b95fabacec83a62a8aa08fd9 --- /dev/null +++ b/Tests/A2/J1_resolvetype4/pack/Foo.java @@ -0,0 +1,5 @@ +package pack; + +public class Foo { + public Foo() { } +} diff --git a/Tests/A2/J1_resolvetype6/Main.java b/Tests/A2/J1_resolvetype6/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..a47683afca534989d39b1a9c5c52881af806c46b --- /dev/null +++ b/Tests/A2/J1_resolvetype6/Main.java @@ -0,0 +1,11 @@ +// TYPE_LINKING +import java.util.*; +import java.sql.*; + +public class Main { + public Main() { } + public static int test() { + java.util.Date d = new java.util.Date(); + return 123; + } +} diff --git a/Tests/A2/J1_resolvetype6/java/sql/Date.java b/Tests/A2/J1_resolvetype6/java/sql/Date.java new file mode 100644 index 0000000000000000000000000000000000000000..e8db49919eb7b8214cdcf9586f203be53b5b0c7f --- /dev/null +++ b/Tests/A2/J1_resolvetype6/java/sql/Date.java @@ -0,0 +1,5 @@ +package java.sql; +public class Date { + public Date() { + } +} diff --git a/Tests/A2/J1_resolvetype6/java/util/Date.java b/Tests/A2/J1_resolvetype6/java/util/Date.java new file mode 100644 index 0000000000000000000000000000000000000000..3b90d9590cac189520df0bbe9066b35c848fa4d1 --- /dev/null +++ b/Tests/A2/J1_resolvetype6/java/util/Date.java @@ -0,0 +1,5 @@ +package java.util; +public class Date { + public Date() { + } +} diff --git a/Tests/A2/J1_samePackage/Main.java b/Tests/A2/J1_samePackage/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..a604df6faa549948924c68cebda9594a6da137c8 --- /dev/null +++ b/Tests/A2/J1_samePackage/Main.java @@ -0,0 +1,9 @@ +// TYPE_LINKING +public class Main { + public Main() { + } + + public static int test() { + return new foo.Bar().baz.a; + } +} diff --git a/Tests/A2/J1_samePackage/foo/Bar.java b/Tests/A2/J1_samePackage/foo/Bar.java new file mode 100644 index 0000000000000000000000000000000000000000..6c72fb27f8761bb8c225fddf63074ac3be5fef43 --- /dev/null +++ b/Tests/A2/J1_samePackage/foo/Bar.java @@ -0,0 +1,9 @@ +package foo; + +public class Bar { + public Baz baz; + + public Bar() { + baz = new Baz(123); + } +} diff --git a/Tests/A2/J1_samePackage/foo/Baz.java b/Tests/A2/J1_samePackage/foo/Baz.java new file mode 100644 index 0000000000000000000000000000000000000000..6c4cdfac532e0c5ad78dc683f6028fc1abbc0170 --- /dev/null +++ b/Tests/A2/J1_samePackage/foo/Baz.java @@ -0,0 +1,12 @@ +package foo; + +public class Baz { + public int a; + + public Baz() { + } + + public Baz(int a) { + this.a = a; + } +} diff --git a/Tests/A2/J1_singleTypeImport/Main.java b/Tests/A2/J1_singleTypeImport/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..bae3e5f84a0f9270f83c66f903cab9a990460cb4 --- /dev/null +++ b/Tests/A2/J1_singleTypeImport/Main.java @@ -0,0 +1,16 @@ +// TYPE_LINKING +import java.util.List; +import java.util.LinkedList; +import java.awt.*; + +public class Main { + + public Main () {} + + public static int test() { + List ls = new LinkedList(); + java.awt.List als = null; + return 123; + } + +} diff --git a/Tests/A2/J1_singleTypeImport/java/awt/List.java b/Tests/A2/J1_singleTypeImport/java/awt/List.java new file mode 100644 index 0000000000000000000000000000000000000000..7e253f6d15713cd32c9679d1d1e016d03a941c0d --- /dev/null +++ b/Tests/A2/J1_singleTypeImport/java/awt/List.java @@ -0,0 +1,5 @@ +package java.awt; +public class List { + public List() { + } +} diff --git a/Tests/A2/J1_singleTypeImport/java/util/Collection.java b/Tests/A2/J1_singleTypeImport/java/util/Collection.java new file mode 100644 index 0000000000000000000000000000000000000000..9be463e2a558b848d566ba3b86fdfbf3cd50ea2f --- /dev/null +++ b/Tests/A2/J1_singleTypeImport/java/util/Collection.java @@ -0,0 +1,4 @@ +package java.util; + +public interface Collection { +} diff --git a/Tests/A2/J1_singleTypeImport/java/util/LinkedList.java b/Tests/A2/J1_singleTypeImport/java/util/LinkedList.java new file mode 100644 index 0000000000000000000000000000000000000000..7b3f6328da16aee2b4618529a3132356a7cc34d3 --- /dev/null +++ b/Tests/A2/J1_singleTypeImport/java/util/LinkedList.java @@ -0,0 +1,32 @@ +package java.util; +public class LinkedList implements List { + protected boolean empty = true; + protected Object cur = null; + protected LinkedList next = null; + public LinkedList() { + } + public int size() { + if(empty) return 0; + else if(next == null) return 1; + else return 1+next.size(); + } + public boolean add(Object o) { + if(empty) { + cur = o; + empty = false; + } else { + if(next == null) { + next = new LinkedList(); + } + next.add(o); + } + return true; + } + public Object clone() { + LinkedList ret = new LinkedList(); + if(next != null) ret.next = (LinkedList) next.clone(); + ret.cur = cur; + ret.empty = empty; + return ret; + } +} diff --git a/Tests/A2/J1_singleTypeImport/java/util/List.java b/Tests/A2/J1_singleTypeImport/java/util/List.java new file mode 100644 index 0000000000000000000000000000000000000000..85fb05705a7940916c40e4771d37d87ec103dbaf --- /dev/null +++ b/Tests/A2/J1_singleTypeImport/java/util/List.java @@ -0,0 +1,4 @@ +package java.util; +public interface List extends Collection { + public int size(); +} diff --git a/Tests/A2/J1_singleTypeImportSameTypeMultipleTimes/Main.java b/Tests/A2/J1_singleTypeImportSameTypeMultipleTimes/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..40a46131e83a9ed6b7eb230c85439bfb168f1f58 --- /dev/null +++ b/Tests/A2/J1_singleTypeImportSameTypeMultipleTimes/Main.java @@ -0,0 +1,15 @@ +// TYPE_LINKING +import java.util.List; +import java.util.List; +import java.util.LinkedList; + +public class Main { + + public Main () {} + + public static int test() { + List ls = new LinkedList(); + return 123; + } + +} diff --git a/Tests/A2/J1_singleTypeImportSameTypeMultipleTimes/java/util/Collection.java b/Tests/A2/J1_singleTypeImportSameTypeMultipleTimes/java/util/Collection.java new file mode 100644 index 0000000000000000000000000000000000000000..9be463e2a558b848d566ba3b86fdfbf3cd50ea2f --- /dev/null +++ b/Tests/A2/J1_singleTypeImportSameTypeMultipleTimes/java/util/Collection.java @@ -0,0 +1,4 @@ +package java.util; + +public interface Collection { +} diff --git a/Tests/A2/J1_singleTypeImportSameTypeMultipleTimes/java/util/LinkedList.java b/Tests/A2/J1_singleTypeImportSameTypeMultipleTimes/java/util/LinkedList.java new file mode 100644 index 0000000000000000000000000000000000000000..7b3f6328da16aee2b4618529a3132356a7cc34d3 --- /dev/null +++ b/Tests/A2/J1_singleTypeImportSameTypeMultipleTimes/java/util/LinkedList.java @@ -0,0 +1,32 @@ +package java.util; +public class LinkedList implements List { + protected boolean empty = true; + protected Object cur = null; + protected LinkedList next = null; + public LinkedList() { + } + public int size() { + if(empty) return 0; + else if(next == null) return 1; + else return 1+next.size(); + } + public boolean add(Object o) { + if(empty) { + cur = o; + empty = false; + } else { + if(next == null) { + next = new LinkedList(); + } + next.add(o); + } + return true; + } + public Object clone() { + LinkedList ret = new LinkedList(); + if(next != null) ret.next = (LinkedList) next.clone(); + ret.cur = cur; + ret.empty = empty; + return ret; + } +} diff --git a/Tests/A2/J1_singleTypeImportSameTypeMultipleTimes/java/util/List.java b/Tests/A2/J1_singleTypeImportSameTypeMultipleTimes/java/util/List.java new file mode 100644 index 0000000000000000000000000000000000000000..85fb05705a7940916c40e4771d37d87ec103dbaf --- /dev/null +++ b/Tests/A2/J1_singleTypeImportSameTypeMultipleTimes/java/util/List.java @@ -0,0 +1,4 @@ +package java.util; +public interface List extends Collection { + public int size(); +} diff --git a/Tests/A2/J1_static_method_override1/Main.java b/Tests/A2/J1_static_method_override1/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..074fd9007e6b160dac709be6494c969bd8a5cea8 --- /dev/null +++ b/Tests/A2/J1_static_method_override1/Main.java @@ -0,0 +1,19 @@ +// HIERARCHY +/* An instance method must not override a static method, + * but a new method with the same name may be defined. */ + +public class Main extends foo{ + + public Main(){} + + public int bar(String s){ + return 123; + } + + public static int test(){ + + Main m = new Main(); + return m.bar("Hello World!"); + } + +} diff --git a/Tests/A2/J1_static_method_override1/foo.java b/Tests/A2/J1_static_method_override1/foo.java new file mode 100644 index 0000000000000000000000000000000000000000..ce48e08714c38eb390a6e499289514e8fff074a0 --- /dev/null +++ b/Tests/A2/J1_static_method_override1/foo.java @@ -0,0 +1,9 @@ +public class foo{ + + public foo(){} + + public static int bar(int f){ + return f+1; + } + +} diff --git a/Tests/A2/J1_supermethod_override1/CompA.java b/Tests/A2/J1_supermethod_override1/CompA.java new file mode 100644 index 0000000000000000000000000000000000000000..9a4db5212d2bc58e9992ab7ac95d5f549661a020 --- /dev/null +++ b/Tests/A2/J1_supermethod_override1/CompA.java @@ -0,0 +1,6 @@ +public class CompA { + public CompA() {} + public int compareTo(Object o) { + return 123; + } +} diff --git a/Tests/A2/J1_supermethod_override1/CompB.java b/Tests/A2/J1_supermethod_override1/CompB.java new file mode 100644 index 0000000000000000000000000000000000000000..ac090fedc4e5b1a7ce456e57892a483828381a07 --- /dev/null +++ b/Tests/A2/J1_supermethod_override1/CompB.java @@ -0,0 +1,3 @@ +public class CompB extends CompA implements Comparable { + public CompB() {} +} diff --git a/Tests/A2/J1_supermethod_override1/Main.java b/Tests/A2/J1_supermethod_override1/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..bba30c3b85459bcccbb2e5945cd603661bd6406b --- /dev/null +++ b/Tests/A2/J1_supermethod_override1/Main.java @@ -0,0 +1,16 @@ +// HIERARCHY +/* Hierarchy: + * class CompA { + * int compareTo(Object) + * } + * class CompB extends CompA implements Comparable { + * int compareTo(Object) + * } + */ + public class Main { + public Main() {} + public static int test() { + CompA x = new CompB(); + return x.compareTo((Object)null); + } +} diff --git a/Tests/A2/J1_supermethod_override1/java/lang/Comparable.java b/Tests/A2/J1_supermethod_override1/java/lang/Comparable.java new file mode 100644 index 0000000000000000000000000000000000000000..3b4d1a9bc2c2268781be9257344534da360ffddf --- /dev/null +++ b/Tests/A2/J1_supermethod_override1/java/lang/Comparable.java @@ -0,0 +1,5 @@ +package java.lang; + +public interface Comparable { + public int compareTo(Object o); +} diff --git a/Tests/A2/J1_supermethod_override2/CompA.java b/Tests/A2/J1_supermethod_override2/CompA.java new file mode 100644 index 0000000000000000000000000000000000000000..9a4db5212d2bc58e9992ab7ac95d5f549661a020 --- /dev/null +++ b/Tests/A2/J1_supermethod_override2/CompA.java @@ -0,0 +1,6 @@ +public class CompA { + public CompA() {} + public int compareTo(Object o) { + return 123; + } +} diff --git a/Tests/A2/J1_supermethod_override2/CompB.java b/Tests/A2/J1_supermethod_override2/CompB.java new file mode 100644 index 0000000000000000000000000000000000000000..ac090fedc4e5b1a7ce456e57892a483828381a07 --- /dev/null +++ b/Tests/A2/J1_supermethod_override2/CompB.java @@ -0,0 +1,3 @@ +public class CompB extends CompA implements Comparable { + public CompB() {} +} diff --git a/Tests/A2/J1_supermethod_override2/Main.java b/Tests/A2/J1_supermethod_override2/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..112854eea1a41b4a0bf1750b8fbc4ddd34830c94 --- /dev/null +++ b/Tests/A2/J1_supermethod_override2/Main.java @@ -0,0 +1,16 @@ +// HIERARCHY +/* Hierarchy: + * class CompA { + * int compareTo(Object) + * } + * class CompB extends CompA implements Comparable { + * int compareTo(Object) + * } + */ +public class Main { + public Main() {} + public static int test() { + CompB x = new CompB(); + return x.compareTo((Object)null); + } +} diff --git a/Tests/A2/J1_supermethod_override2/java/lang/Comparable.java b/Tests/A2/J1_supermethod_override2/java/lang/Comparable.java new file mode 100644 index 0000000000000000000000000000000000000000..3b4d1a9bc2c2268781be9257344534da360ffddf --- /dev/null +++ b/Tests/A2/J1_supermethod_override2/java/lang/Comparable.java @@ -0,0 +1,5 @@ +package java.lang; + +public interface Comparable { + public int compareTo(Object o); +} diff --git a/Tests/A2/J1_supermethod_override3/CompA.java b/Tests/A2/J1_supermethod_override3/CompA.java new file mode 100644 index 0000000000000000000000000000000000000000..9a4db5212d2bc58e9992ab7ac95d5f549661a020 --- /dev/null +++ b/Tests/A2/J1_supermethod_override3/CompA.java @@ -0,0 +1,6 @@ +public class CompA { + public CompA() {} + public int compareTo(Object o) { + return 123; + } +} diff --git a/Tests/A2/J1_supermethod_override3/CompB.java b/Tests/A2/J1_supermethod_override3/CompB.java new file mode 100644 index 0000000000000000000000000000000000000000..ac090fedc4e5b1a7ce456e57892a483828381a07 --- /dev/null +++ b/Tests/A2/J1_supermethod_override3/CompB.java @@ -0,0 +1,3 @@ +public class CompB extends CompA implements Comparable { + public CompB() {} +} diff --git a/Tests/A2/J1_supermethod_override3/Main.java b/Tests/A2/J1_supermethod_override3/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..c3d729d191e526dd78b60871ef022b536328aef1 --- /dev/null +++ b/Tests/A2/J1_supermethod_override3/Main.java @@ -0,0 +1,17 @@ +// HIERARCHY +/* Hierarchy: + * class CompA { + * } + * abstract class CompB extends CompA implements Comparable { + * } + * class CompC extends CompB { + * int compareTo(Object) + * } + */ +public class Main { + public Main() {} + public static int test() { + Comparable x = new CompB(); + return x.compareTo((Object)null); + } +} diff --git a/Tests/A2/J1_supermethod_override3/java/lang/Comparable.java b/Tests/A2/J1_supermethod_override3/java/lang/Comparable.java new file mode 100644 index 0000000000000000000000000000000000000000..3b4d1a9bc2c2268781be9257344534da360ffddf --- /dev/null +++ b/Tests/A2/J1_supermethod_override3/java/lang/Comparable.java @@ -0,0 +1,5 @@ +package java.lang; + +public interface Comparable { + public int compareTo(Object o); +} diff --git a/Tests/A2/J1_supermethod_override4/CompA.java b/Tests/A2/J1_supermethod_override4/CompA.java new file mode 100644 index 0000000000000000000000000000000000000000..db044848e866c4cf17ad50cf46b78fa658280b24 --- /dev/null +++ b/Tests/A2/J1_supermethod_override4/CompA.java @@ -0,0 +1,3 @@ +public class CompA { + public CompA() {} +} diff --git a/Tests/A2/J1_supermethod_override4/CompB.java b/Tests/A2/J1_supermethod_override4/CompB.java new file mode 100644 index 0000000000000000000000000000000000000000..f89b5199ba3373f4b34853bc9693b869e27fbe2e --- /dev/null +++ b/Tests/A2/J1_supermethod_override4/CompB.java @@ -0,0 +1,3 @@ +public abstract class CompB extends CompA implements Comparable { + public CompB() {} +} diff --git a/Tests/A2/J1_supermethod_override4/CompC.java b/Tests/A2/J1_supermethod_override4/CompC.java new file mode 100644 index 0000000000000000000000000000000000000000..2269fb2b98bbba47aef440f4fa9fc23a856c6410 --- /dev/null +++ b/Tests/A2/J1_supermethod_override4/CompC.java @@ -0,0 +1,6 @@ +public class CompC extends CompB { + public CompC() {} + public int compareTo(Object o) { + return 123; + } +} diff --git a/Tests/A2/J1_supermethod_override4/Main.java b/Tests/A2/J1_supermethod_override4/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..6ab95640878066aaa7bb9ae9d62f240ce4d26f17 --- /dev/null +++ b/Tests/A2/J1_supermethod_override4/Main.java @@ -0,0 +1,17 @@ +// HIERARCHY +/* Hierarchy: + * class CompA { + * } + * abstract class CompB extends CompA implements Comparable { + * } + * class CompC extends CompB { + * int compareTo(Object) + * } + */ +public class Main { + public Main() {} + public static int test() { + CompB x = new CompC(); + return x.compareTo((Object)null); + } +} diff --git a/Tests/A2/J1_supermethod_override4/java/lang/Comparable.java b/Tests/A2/J1_supermethod_override4/java/lang/Comparable.java new file mode 100644 index 0000000000000000000000000000000000000000..3b4d1a9bc2c2268781be9257344534da360ffddf --- /dev/null +++ b/Tests/A2/J1_supermethod_override4/java/lang/Comparable.java @@ -0,0 +1,5 @@ +package java.lang; + +public interface Comparable { + public int compareTo(Object o); +} diff --git a/Tests/A2/J1_supermethod_override5/CompA.java b/Tests/A2/J1_supermethod_override5/CompA.java new file mode 100644 index 0000000000000000000000000000000000000000..db044848e866c4cf17ad50cf46b78fa658280b24 --- /dev/null +++ b/Tests/A2/J1_supermethod_override5/CompA.java @@ -0,0 +1,3 @@ +public class CompA { + public CompA() {} +} diff --git a/Tests/A2/J1_supermethod_override5/CompB.java b/Tests/A2/J1_supermethod_override5/CompB.java new file mode 100644 index 0000000000000000000000000000000000000000..46b6c18baec5de8addaa3588db13bf47408a3963 --- /dev/null +++ b/Tests/A2/J1_supermethod_override5/CompB.java @@ -0,0 +1,5 @@ +public abstract class CompB extends CompA implements Comparable { + public CompB() {} + + public abstract int compareTo(Object o); +} diff --git a/Tests/A2/J1_supermethod_override5/CompC.java b/Tests/A2/J1_supermethod_override5/CompC.java new file mode 100644 index 0000000000000000000000000000000000000000..2269fb2b98bbba47aef440f4fa9fc23a856c6410 --- /dev/null +++ b/Tests/A2/J1_supermethod_override5/CompC.java @@ -0,0 +1,6 @@ +public class CompC extends CompB { + public CompC() {} + public int compareTo(Object o) { + return 123; + } +} diff --git a/Tests/A2/J1_supermethod_override5/Main.java b/Tests/A2/J1_supermethod_override5/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..6ab95640878066aaa7bb9ae9d62f240ce4d26f17 --- /dev/null +++ b/Tests/A2/J1_supermethod_override5/Main.java @@ -0,0 +1,17 @@ +// HIERARCHY +/* Hierarchy: + * class CompA { + * } + * abstract class CompB extends CompA implements Comparable { + * } + * class CompC extends CompB { + * int compareTo(Object) + * } + */ +public class Main { + public Main() {} + public static int test() { + CompB x = new CompC(); + return x.compareTo((Object)null); + } +} diff --git a/Tests/A2/J1_supermethod_override5/java/lang/Comparable.java b/Tests/A2/J1_supermethod_override5/java/lang/Comparable.java new file mode 100644 index 0000000000000000000000000000000000000000..3b4d1a9bc2c2268781be9257344534da360ffddf --- /dev/null +++ b/Tests/A2/J1_supermethod_override5/java/lang/Comparable.java @@ -0,0 +1,5 @@ +package java.lang; + +public interface Comparable { + public int compareTo(Object o); +} diff --git a/Tests/A2/J1_supermethod_override6/CompA.java b/Tests/A2/J1_supermethod_override6/CompA.java new file mode 100644 index 0000000000000000000000000000000000000000..db044848e866c4cf17ad50cf46b78fa658280b24 --- /dev/null +++ b/Tests/A2/J1_supermethod_override6/CompA.java @@ -0,0 +1,3 @@ +public class CompA { + public CompA() {} +} diff --git a/Tests/A2/J1_supermethod_override6/CompB.java b/Tests/A2/J1_supermethod_override6/CompB.java new file mode 100644 index 0000000000000000000000000000000000000000..0a88d9ed4a7b2a3bdaeaaf366c1ffbe48aee01dd --- /dev/null +++ b/Tests/A2/J1_supermethod_override6/CompB.java @@ -0,0 +1,7 @@ +public abstract class CompB extends CompA implements Comparable { + public CompB() {} + + public int compareTo(Object o) { + return 7; + } +} diff --git a/Tests/A2/J1_supermethod_override6/CompC.java b/Tests/A2/J1_supermethod_override6/CompC.java new file mode 100644 index 0000000000000000000000000000000000000000..2269fb2b98bbba47aef440f4fa9fc23a856c6410 --- /dev/null +++ b/Tests/A2/J1_supermethod_override6/CompC.java @@ -0,0 +1,6 @@ +public class CompC extends CompB { + public CompC() {} + public int compareTo(Object o) { + return 123; + } +} diff --git a/Tests/A2/J1_supermethod_override6/Main.java b/Tests/A2/J1_supermethod_override6/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..10fdd1589b5f055c431a70cac7328711bc939644 --- /dev/null +++ b/Tests/A2/J1_supermethod_override6/Main.java @@ -0,0 +1,18 @@ +// HIERARCHY +/* Hierarchy: + * class CompA { + * } + * abstract class CompB extends CompA implements Comparable { + int compareTo(Object) + * } + * class CompC extends CompB { + * int compareTo(Object) + * } + */ +public class Main { + public Main() {} + public static int test() { + CompB x = new CompC(); + return x.compareTo((Object)null); + } +} diff --git a/Tests/A2/J1_supermethod_override6/java/lang/Comparable.java b/Tests/A2/J1_supermethod_override6/java/lang/Comparable.java new file mode 100644 index 0000000000000000000000000000000000000000..3b4d1a9bc2c2268781be9257344534da360ffddf --- /dev/null +++ b/Tests/A2/J1_supermethod_override6/java/lang/Comparable.java @@ -0,0 +1,5 @@ +package java.lang; + +public interface Comparable { + public int compareTo(Object o); +} diff --git a/Tests/A2/J1_typecheck_assignment/A.java b/Tests/A2/J1_typecheck_assignment/A.java new file mode 100644 index 0000000000000000000000000000000000000000..576ea14be79a4c972d9325d6ddd6008de435ae52 --- /dev/null +++ b/Tests/A2/J1_typecheck_assignment/A.java @@ -0,0 +1,11 @@ +public class A { + + public int f = 123; + + public A() {} + + public A (int f) { + this.f = f; + } + +} diff --git a/Tests/A2/J1_typecheck_assignment/B.java b/Tests/A2/J1_typecheck_assignment/B.java new file mode 100644 index 0000000000000000000000000000000000000000..6f8aaa6cba0dcc708a49aec7fca392351b66b124 --- /dev/null +++ b/Tests/A2/J1_typecheck_assignment/B.java @@ -0,0 +1,12 @@ +public class B extends A { + + public int f; + + public B () { + } + + public B (int f) { + this.f = f; + } + +} diff --git a/Tests/A2/J1_typecheck_assignment/Main.java b/Tests/A2/J1_typecheck_assignment/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..7ca52ff7c19d52c6d014b7ebd21c63facad8b5c2 --- /dev/null +++ b/Tests/A2/J1_typecheck_assignment/Main.java @@ -0,0 +1,22 @@ +// HIERARCHY,TYPE_CHECKING +/* TypeChecking: (only works with Java 1.3) + * + * class A { + * int f + * } + * + * class B extends A { + * int f + * } + */ +public class Main { + + public Main () {} + + public static int test() { + A a = new A(42); + B b = new B(42); + return (a=b).f; + } + +} diff --git a/Tests/A2/J2_3_SingleTypeImport_ImportSelf_Interface/Main.java b/Tests/A2/J2_3_SingleTypeImport_ImportSelf_Interface/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..0653d4b65497cc77d802631ef7da9e3b27578888 --- /dev/null +++ b/Tests/A2/J2_3_SingleTypeImport_ImportSelf_Interface/Main.java @@ -0,0 +1,16 @@ +//TYPE_LINKING +//JOOS1:PARSER_WEEDER,JOOS1_INTERFACE,PARSER_EXCEPTION +/** + * TypeLinking: + * - The name of a class must not clash with the name of a singletype + * import, but a class may import itself. + */ +public class Main{ + + public Main(){} + + public static int test(){ + return 123; + } + +} diff --git a/Tests/A2/J2_3_SingleTypeImport_ImportSelf_Interface/Test/Foo.java b/Tests/A2/J2_3_SingleTypeImport_ImportSelf_Interface/Test/Foo.java new file mode 100644 index 0000000000000000000000000000000000000000..5b808a12d1b08c030533d8b03b981fa9f33fe6f5 --- /dev/null +++ b/Tests/A2/J2_3_SingleTypeImport_ImportSelf_Interface/Test/Foo.java @@ -0,0 +1,6 @@ +package Test; + +import Test.Foo; + +public interface Foo{ +} diff --git a/Tests/A2/J2_4_ImplementsInterface_TwiceByName/Main.java b/Tests/A2/J2_4_ImplementsInterface_TwiceByName/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..bd1e2e795ef1fb4cb9885e48c1a1fc97aa29cf7e --- /dev/null +++ b/Tests/A2/J2_4_ImplementsInterface_TwiceByName/Main.java @@ -0,0 +1,14 @@ +// HIERARCHY +// JOOS1: PARSER_WEEDER,JOOS1_INTERFACE,PARSER_EXCEPTION +/* Hierarchy: + * An interface must not be mentioned more than once in the same implements + * clause of a class (8.1.4, simple constraint 3). + */ + +public class Main implements Cloneable, foo.Cloneable { + public Main() {} + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/J2_4_ImplementsInterface_TwiceByName/foo/Cloneable.java b/Tests/A2/J2_4_ImplementsInterface_TwiceByName/foo/Cloneable.java new file mode 100644 index 0000000000000000000000000000000000000000..05344dcc6e43a50ca624b297b37330a311d578b8 --- /dev/null +++ b/Tests/A2/J2_4_ImplementsInterface_TwiceByName/foo/Cloneable.java @@ -0,0 +1,4 @@ +package foo; + +public interface Cloneable { +} diff --git a/Tests/A2/J2_4_InterfaceExtends_MultipleWays/A.java b/Tests/A2/J2_4_InterfaceExtends_MultipleWays/A.java new file mode 100644 index 0000000000000000000000000000000000000000..c20abeb17acd61388307b2f5e79c0f952a6f9045 --- /dev/null +++ b/Tests/A2/J2_4_InterfaceExtends_MultipleWays/A.java @@ -0,0 +1,2 @@ +public interface A { +} diff --git a/Tests/A2/J2_4_InterfaceExtends_MultipleWays/B.java b/Tests/A2/J2_4_InterfaceExtends_MultipleWays/B.java new file mode 100644 index 0000000000000000000000000000000000000000..b002e680da94dbb1115bc591f21c04f7301f6af0 --- /dev/null +++ b/Tests/A2/J2_4_InterfaceExtends_MultipleWays/B.java @@ -0,0 +1,2 @@ +public interface B extends A { +} diff --git a/Tests/A2/J2_4_InterfaceExtends_MultipleWays/C.java b/Tests/A2/J2_4_InterfaceExtends_MultipleWays/C.java new file mode 100644 index 0000000000000000000000000000000000000000..82fa1ee5eb90d1d31d240e3c4488ab3ad6e0d584 --- /dev/null +++ b/Tests/A2/J2_4_InterfaceExtends_MultipleWays/C.java @@ -0,0 +1,2 @@ +public interface C extends A { +} diff --git a/Tests/A2/J2_4_InterfaceExtends_MultipleWays/D.java b/Tests/A2/J2_4_InterfaceExtends_MultipleWays/D.java new file mode 100644 index 0000000000000000000000000000000000000000..53dd2fd7914ad3a63bd8130b46506f813289bf85 --- /dev/null +++ b/Tests/A2/J2_4_InterfaceExtends_MultipleWays/D.java @@ -0,0 +1,2 @@ +public interface D extends B, C, A { +} diff --git a/Tests/A2/J2_4_InterfaceExtends_MultipleWays/Main.java b/Tests/A2/J2_4_InterfaceExtends_MultipleWays/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..ad6bcd4c222ad4e44c5a3afbcd8c45d536861d41 --- /dev/null +++ b/Tests/A2/J2_4_InterfaceExtends_MultipleWays/Main.java @@ -0,0 +1,20 @@ +// HIERARCHY +// JOOS1: PARSER_WEEDER,JOOS1_INTERFACE,PARSER_EXCEPTION +/* Hierarchy: + * Joos 2: An interface must not be mentioned more than once in the same extends + * clause of an interface (missing from the JLS but enforced by javac). + * + * Main implements D + * D implements B, C, A + * C implements A + * B implements A + */ + +public class Main implements D { + + public Main() {} + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/J2_Ifaceimplicitabstract/Foo.java b/Tests/A2/J2_Ifaceimplicitabstract/Foo.java new file mode 100644 index 0000000000000000000000000000000000000000..f27250b6e000361b8755b24ab67b258d42b8afdc --- /dev/null +++ b/Tests/A2/J2_Ifaceimplicitabstract/Foo.java @@ -0,0 +1,3 @@ +public abstract class Foo implements Iface { + public Foo() {} +} diff --git a/Tests/A2/J2_Ifaceimplicitabstract/Iface.java b/Tests/A2/J2_Ifaceimplicitabstract/Iface.java new file mode 100644 index 0000000000000000000000000000000000000000..391f0dae819ba80228c099f45b875f093ca9c705 --- /dev/null +++ b/Tests/A2/J2_Ifaceimplicitabstract/Iface.java @@ -0,0 +1,3 @@ +public interface Iface { + public void foo(); +} diff --git a/Tests/A2/J2_Ifaceimplicitabstract/Main.java b/Tests/A2/J2_Ifaceimplicitabstract/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..a1ad41470a0bb090bea14fad7a5edf4d7b53718a --- /dev/null +++ b/Tests/A2/J2_Ifaceimplicitabstract/Main.java @@ -0,0 +1,9 @@ +// JOOS1: PARSER_WEEDER,JOOS1_INTERFACE,PARSER_EXCEPTION +// JOOS2: HIERARCHY +public class Main extends Foo { + public Main() { } + public void foo() {} + public static int test() { + return 123; + } +} diff --git a/Tests/A2/J2_Interface1/J2_Interface1.java b/Tests/A2/J2_Interface1/J2_Interface1.java new file mode 100644 index 0000000000000000000000000000000000000000..7df0bc886411cd72648b8858049824dacd13396c --- /dev/null +++ b/Tests/A2/J2_Interface1/J2_Interface1.java @@ -0,0 +1,8 @@ + +public interface J2_Interface1 { + public abstract int test1(); + + public abstract int test1(int kj); + + public int test2(); +} diff --git a/Tests/A2/J2_Interface1/Main.java b/Tests/A2/J2_Interface1/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..99fd802bd3a969ba74afba1f49f969d252d06d5e --- /dev/null +++ b/Tests/A2/J2_Interface1/Main.java @@ -0,0 +1,12 @@ +// JOOS1: PARSER_WEEDER,PARSER_EXCEPTION,JOOS1_INTERFACE +// JOOS2: HIERARCHY + +public class Main { + + public Main(){} + + public static int test() { + return 123; + } + +} diff --git a/Tests/A2/J2_Interface10/Foo.java b/Tests/A2/J2_Interface10/Foo.java new file mode 100644 index 0000000000000000000000000000000000000000..2bd4ec0a41b8b945f815ebce750d8833c543378f --- /dev/null +++ b/Tests/A2/J2_Interface10/Foo.java @@ -0,0 +1,6 @@ + +public interface Foo { + + public int test2(); + +} diff --git a/Tests/A2/J2_Interface10/Main.java b/Tests/A2/J2_Interface10/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..bb21d4620ddb4d30cf2d86b92480ae21a2eb1c2d --- /dev/null +++ b/Tests/A2/J2_Interface10/Main.java @@ -0,0 +1,16 @@ +// JOOS1: PARSER_WEEDER,PARSER_EXCEPTION,JOOS1_INTERFACE +// JOOS2: HIERARCHY + +public class Main implements Foo { + + public Main(){} + + public static int test() { + return 123; + } + + public int test2() { + return 0; + } + +} diff --git a/Tests/A2/J2_Interface11/Bar.java b/Tests/A2/J2_Interface11/Bar.java new file mode 100644 index 0000000000000000000000000000000000000000..5f7eaab7870bddf88a7e42e5d0b34b985065a4e1 --- /dev/null +++ b/Tests/A2/J2_Interface11/Bar.java @@ -0,0 +1,6 @@ + +public interface Bar { + + public int baz(String i, String j); + +} diff --git a/Tests/A2/J2_Interface11/Baz.java b/Tests/A2/J2_Interface11/Baz.java new file mode 100644 index 0000000000000000000000000000000000000000..51d18caf7b827eaf449b6ab0b0b00a16b555fd75 --- /dev/null +++ b/Tests/A2/J2_Interface11/Baz.java @@ -0,0 +1,7 @@ + +public interface Baz { + + public int baz(Object o); + + +} diff --git a/Tests/A2/J2_Interface11/Foo.java b/Tests/A2/J2_Interface11/Foo.java new file mode 100644 index 0000000000000000000000000000000000000000..71184b49c0b5bf7075ede32b961f4eee8daf52f2 --- /dev/null +++ b/Tests/A2/J2_Interface11/Foo.java @@ -0,0 +1,6 @@ + +public interface Foo { + + public int baz(String i); + +} diff --git a/Tests/A2/J2_Interface11/Main.java b/Tests/A2/J2_Interface11/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..a31c13a52cfeba27c98ce53a57ff5eb7343406b3 --- /dev/null +++ b/Tests/A2/J2_Interface11/Main.java @@ -0,0 +1,23 @@ +// JOOS1: PARSER_WEEDER,PARSER_EXCEPTION,JOOS1_INTERFACE +// JOOS2: HIERARCHY + +public class Main implements Foo, Bar, Baz { + + public Main(){} + + public static int test() { + return 123; + } + + public int baz(String i) { + return 123; + } + + public int baz(Object o) { + return 123; + } + + public int baz(String i, String j) { + return 123; + } +} diff --git a/Tests/A2/J2_Interface2/J2_Interface2.java b/Tests/A2/J2_Interface2/J2_Interface2.java new file mode 100644 index 0000000000000000000000000000000000000000..9fa05569b054e543a8b1a7bfd8ba673d3cfbb069 --- /dev/null +++ b/Tests/A2/J2_Interface2/J2_Interface2.java @@ -0,0 +1,8 @@ + +public interface J2_Interface2 { + public abstract int test1(); + + public int test1(int kj); + + public int test2(); +} diff --git a/Tests/A2/J2_Interface2/Main.java b/Tests/A2/J2_Interface2/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..99fd802bd3a969ba74afba1f49f969d252d06d5e --- /dev/null +++ b/Tests/A2/J2_Interface2/Main.java @@ -0,0 +1,12 @@ +// JOOS1: PARSER_WEEDER,PARSER_EXCEPTION,JOOS1_INTERFACE +// JOOS2: HIERARCHY + +public class Main { + + public Main(){} + + public static int test() { + return 123; + } + +} diff --git a/Tests/A2/J2_Interface3/J2_Interface3.java b/Tests/A2/J2_Interface3/J2_Interface3.java new file mode 100644 index 0000000000000000000000000000000000000000..4ce47392b7826d6b9e854b7053ccfd7207a4cb36 --- /dev/null +++ b/Tests/A2/J2_Interface3/J2_Interface3.java @@ -0,0 +1,8 @@ + +public interface J2_Interface3 { + public int test1(); + + public int test1(int kj); + + public int test2(); +} diff --git a/Tests/A2/J2_Interface3/Main.java b/Tests/A2/J2_Interface3/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..99fd802bd3a969ba74afba1f49f969d252d06d5e --- /dev/null +++ b/Tests/A2/J2_Interface3/Main.java @@ -0,0 +1,12 @@ +// JOOS1: PARSER_WEEDER,PARSER_EXCEPTION,JOOS1_INTERFACE +// JOOS2: HIERARCHY + +public class Main { + + public Main(){} + + public static int test() { + return 123; + } + +} diff --git a/Tests/A2/J2_Interface6/Bar.java b/Tests/A2/J2_Interface6/Bar.java new file mode 100644 index 0000000000000000000000000000000000000000..03a891664db6760eace6ebadb91d0e6256f465be --- /dev/null +++ b/Tests/A2/J2_Interface6/Bar.java @@ -0,0 +1,6 @@ + +public interface Bar { + + public int baz(); + +} diff --git a/Tests/A2/J2_Interface6/Foo.java b/Tests/A2/J2_Interface6/Foo.java new file mode 100644 index 0000000000000000000000000000000000000000..6a9e500429341570fe99e6ae38fc491234041fc2 --- /dev/null +++ b/Tests/A2/J2_Interface6/Foo.java @@ -0,0 +1,9 @@ + +public interface Foo { + + public int baz(); + + public String axa(); + + public abstract int hawk(); +} diff --git a/Tests/A2/J2_Interface6/Main.java b/Tests/A2/J2_Interface6/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..13ba78b55c1f0a8e27466a706ad698840ddde287 --- /dev/null +++ b/Tests/A2/J2_Interface6/Main.java @@ -0,0 +1,27 @@ +// JOOS1: PARSER_WEEDER,PARSER_EXCEPTION,JOOS1_INTERFACE +// JOOS2: HIERARCHY + +public class Main implements Foo, Bar { + + public Main(){} + + public static int test() { + return 123; + } + + public String axa() { + + return null; + } + + public int baz() { + + return 0; + } + + public int hawk() { + + return 0; + } + +} diff --git a/Tests/A2/J2_Interface7/Bar.java b/Tests/A2/J2_Interface7/Bar.java new file mode 100644 index 0000000000000000000000000000000000000000..03a891664db6760eace6ebadb91d0e6256f465be --- /dev/null +++ b/Tests/A2/J2_Interface7/Bar.java @@ -0,0 +1,6 @@ + +public interface Bar { + + public int baz(); + +} diff --git a/Tests/A2/J2_Interface7/Baz.java b/Tests/A2/J2_Interface7/Baz.java new file mode 100644 index 0000000000000000000000000000000000000000..542b3c9699e819e86f0621b4f2e56a45919e987a --- /dev/null +++ b/Tests/A2/J2_Interface7/Baz.java @@ -0,0 +1,6 @@ + +public interface Baz { + + public int baz(); + +} diff --git a/Tests/A2/J2_Interface7/Foo.java b/Tests/A2/J2_Interface7/Foo.java new file mode 100644 index 0000000000000000000000000000000000000000..6a9e500429341570fe99e6ae38fc491234041fc2 --- /dev/null +++ b/Tests/A2/J2_Interface7/Foo.java @@ -0,0 +1,9 @@ + +public interface Foo { + + public int baz(); + + public String axa(); + + public abstract int hawk(); +} diff --git a/Tests/A2/J2_Interface7/Main.java b/Tests/A2/J2_Interface7/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..3fdeb03d27bba12a2bf55bf0b856fea6ba838ab5 --- /dev/null +++ b/Tests/A2/J2_Interface7/Main.java @@ -0,0 +1,27 @@ +// JOOS1: PARSER_WEEDER,PARSER_EXCEPTION,JOOS1_INTERFACE +// JOOS2: HIERARCHY + +public class Main implements Foo, Bar, Baz { + + public Main(){} + + public static int test() { + return 123; + } + + public String axa() { + + return null; + } + + public int baz() { + + return 0; + } + + public int hawk() { + + return 0; + } + +} diff --git a/Tests/A2/J2_Interface8/Bar.java b/Tests/A2/J2_Interface8/Bar.java new file mode 100644 index 0000000000000000000000000000000000000000..792d7848d4cfbab8702623421776171772365612 --- /dev/null +++ b/Tests/A2/J2_Interface8/Bar.java @@ -0,0 +1,8 @@ + +public interface Bar { + + public int baz(); + + public String axa(); + +} diff --git a/Tests/A2/J2_Interface8/Baz.java b/Tests/A2/J2_Interface8/Baz.java new file mode 100644 index 0000000000000000000000000000000000000000..0d9949a6ff1dadccf97e8b55250804eb1b16f89b --- /dev/null +++ b/Tests/A2/J2_Interface8/Baz.java @@ -0,0 +1,8 @@ + +public interface Baz { + + public int baz(); + + public String axa(); + +} diff --git a/Tests/A2/J2_Interface8/Foo.java b/Tests/A2/J2_Interface8/Foo.java new file mode 100644 index 0000000000000000000000000000000000000000..6a9e500429341570fe99e6ae38fc491234041fc2 --- /dev/null +++ b/Tests/A2/J2_Interface8/Foo.java @@ -0,0 +1,9 @@ + +public interface Foo { + + public int baz(); + + public String axa(); + + public abstract int hawk(); +} diff --git a/Tests/A2/J2_Interface8/Main.java b/Tests/A2/J2_Interface8/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..3fdeb03d27bba12a2bf55bf0b856fea6ba838ab5 --- /dev/null +++ b/Tests/A2/J2_Interface8/Main.java @@ -0,0 +1,27 @@ +// JOOS1: PARSER_WEEDER,PARSER_EXCEPTION,JOOS1_INTERFACE +// JOOS2: HIERARCHY + +public class Main implements Foo, Bar, Baz { + + public Main(){} + + public static int test() { + return 123; + } + + public String axa() { + + return null; + } + + public int baz() { + + return 0; + } + + public int hawk() { + + return 0; + } + +} diff --git a/Tests/A2/J2_Interface9/Bar.java b/Tests/A2/J2_Interface9/Bar.java new file mode 100644 index 0000000000000000000000000000000000000000..fe66eaaf0f1a9cbbc5a3b70d2bd3664fc04cf7bd --- /dev/null +++ b/Tests/A2/J2_Interface9/Bar.java @@ -0,0 +1,6 @@ + +public interface Bar extends Foo { + + public String bar(); + +} diff --git a/Tests/A2/J2_Interface9/Foo.java b/Tests/A2/J2_Interface9/Foo.java new file mode 100644 index 0000000000000000000000000000000000000000..b0a1b4c269d081f6411f42092d826209f491a876 --- /dev/null +++ b/Tests/A2/J2_Interface9/Foo.java @@ -0,0 +1,6 @@ + +public interface Foo { + + public int foo(); + +} diff --git a/Tests/A2/J2_Interface9/Main.java b/Tests/A2/J2_Interface9/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..61086388c8005f2e252cd8a3b7f3afcbee103572 --- /dev/null +++ b/Tests/A2/J2_Interface9/Main.java @@ -0,0 +1,20 @@ +// JOOS1: PARSER_WEEDER,PARSER_EXCEPTION,JOOS1_INTERFACE +// JOOS2: HIERARCHY + +public class Main implements Bar { + + public Main() {} + + public static int test() { + return 123; + } + + public String bar() { + return null; + } + + public int foo() { + return 0; + } + +} diff --git a/Tests/A2/J2_hierachyCheck22/Main.java b/Tests/A2/J2_hierachyCheck22/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..6eac27f80b2449512f3331b07d4d20cd1c097adc --- /dev/null +++ b/Tests/A2/J2_hierachyCheck22/Main.java @@ -0,0 +1,20 @@ +// JOOS1: PARSER_WEEDER,JOOS1_INTERFACE,PARSER_EXCEPTION +// JOOS2: HIERARCHY +/* + boz - f, g + / \ + bar baz + \ / + foo +*/ + +public class Main { + + public Main() {} + + public static int test() { + foo f = new foo(); + return f.f(); + } + +} diff --git a/Tests/A2/J2_hierachyCheck22/bar.java b/Tests/A2/J2_hierachyCheck22/bar.java new file mode 100644 index 0000000000000000000000000000000000000000..579384d03c35bd8d5d0a1e5bd5ba5db5a3484d04 --- /dev/null +++ b/Tests/A2/J2_hierachyCheck22/bar.java @@ -0,0 +1,3 @@ +public interface bar extends boz { + +} diff --git a/Tests/A2/J2_hierachyCheck22/baz.java b/Tests/A2/J2_hierachyCheck22/baz.java new file mode 100644 index 0000000000000000000000000000000000000000..d5a3ed38c67d43768a0896dd242e503ee35e94dc --- /dev/null +++ b/Tests/A2/J2_hierachyCheck22/baz.java @@ -0,0 +1,3 @@ +public interface baz extends boz{ + +} diff --git a/Tests/A2/J2_hierachyCheck22/boz.java b/Tests/A2/J2_hierachyCheck22/boz.java new file mode 100644 index 0000000000000000000000000000000000000000..5bfd3d1345326e27032deca7716af2a3748e6ce8 --- /dev/null +++ b/Tests/A2/J2_hierachyCheck22/boz.java @@ -0,0 +1,6 @@ +public interface boz { + + public int f(); + + public int g(); +} diff --git a/Tests/A2/J2_hierachyCheck22/foo.java b/Tests/A2/J2_hierachyCheck22/foo.java new file mode 100644 index 0000000000000000000000000000000000000000..3e0532ad48761118ebb0e87704df770340c35311 --- /dev/null +++ b/Tests/A2/J2_hierachyCheck22/foo.java @@ -0,0 +1,13 @@ +public class foo implements bar, baz { + + public int g() { + return 9; + } + + public int f() { + return 123; + } + + public foo() {} + +} diff --git a/Tests/A2/J2_hierachyCheck23/Main.java b/Tests/A2/J2_hierachyCheck23/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..f47c27d9011006b68fee7b63743208c5c353de67 --- /dev/null +++ b/Tests/A2/J2_hierachyCheck23/Main.java @@ -0,0 +1,21 @@ +// JOOS1: PARSER_WEEDER,JOOS1_INTERFACE,PARSER_EXCEPTION +// JOOS2: HIERARCHY +/* + boz interface + / \ + bar baz + f g + \ / + foo +*/ + +public class Main { + + public Main() {} + + public static int test() { + foo f = new foo(); + return f.f(); + } + +} diff --git a/Tests/A2/J2_hierachyCheck23/bar.java b/Tests/A2/J2_hierachyCheck23/bar.java new file mode 100644 index 0000000000000000000000000000000000000000..ef3e470542929184b714ef30fef553c1cf8396eb --- /dev/null +++ b/Tests/A2/J2_hierachyCheck23/bar.java @@ -0,0 +1,4 @@ +public interface bar extends boz { + + public int f(); +} diff --git a/Tests/A2/J2_hierachyCheck23/baz.java b/Tests/A2/J2_hierachyCheck23/baz.java new file mode 100644 index 0000000000000000000000000000000000000000..8b42ed1d8959c0e403d0eec5024be3f760a83f47 --- /dev/null +++ b/Tests/A2/J2_hierachyCheck23/baz.java @@ -0,0 +1,5 @@ +public interface baz extends boz{ + + public int g(); + +} diff --git a/Tests/A2/J2_hierachyCheck23/boz.java b/Tests/A2/J2_hierachyCheck23/boz.java new file mode 100644 index 0000000000000000000000000000000000000000..a4d266734d25aebe8f81df5caf85c6cbbb37713a --- /dev/null +++ b/Tests/A2/J2_hierachyCheck23/boz.java @@ -0,0 +1,3 @@ +public interface boz { + +} diff --git a/Tests/A2/J2_hierachyCheck23/foo.java b/Tests/A2/J2_hierachyCheck23/foo.java new file mode 100644 index 0000000000000000000000000000000000000000..2808fa5ec6aa2a1650993b319d04d35863253697 --- /dev/null +++ b/Tests/A2/J2_hierachyCheck23/foo.java @@ -0,0 +1,13 @@ +public class foo implements bar, baz { + + public int f() { + return 123; + } + + public int g() { + return 9; + } + + public foo() {} + +} diff --git a/Tests/A2/J2_hierachyCheck24/Main.java b/Tests/A2/J2_hierachyCheck24/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..3d54f3bc21129efad6ad1451cc02b1d27a136138 --- /dev/null +++ b/Tests/A2/J2_hierachyCheck24/Main.java @@ -0,0 +1,23 @@ +// JOOS1: PARSER_WEEDER,JOOS1_INTERFACE,PARSER_EXCEPTION +// JOOS2: HIERARCHY +/* + boz + interface + / \ + bar baz +abstract interface + f g + \ / + foo +*/ + +public class Main { + + public Main() {} + + public static int test() { + foo f = new foo(); + return f.f(); + } + +} diff --git a/Tests/A2/J2_hierachyCheck24/bar.java b/Tests/A2/J2_hierachyCheck24/bar.java new file mode 100644 index 0000000000000000000000000000000000000000..579384d03c35bd8d5d0a1e5bd5ba5db5a3484d04 --- /dev/null +++ b/Tests/A2/J2_hierachyCheck24/bar.java @@ -0,0 +1,3 @@ +public interface bar extends boz { + +} diff --git a/Tests/A2/J2_hierachyCheck24/baz.java b/Tests/A2/J2_hierachyCheck24/baz.java new file mode 100644 index 0000000000000000000000000000000000000000..d5a3ed38c67d43768a0896dd242e503ee35e94dc --- /dev/null +++ b/Tests/A2/J2_hierachyCheck24/baz.java @@ -0,0 +1,3 @@ +public interface baz extends boz{ + +} diff --git a/Tests/A2/J2_hierachyCheck24/boz.java b/Tests/A2/J2_hierachyCheck24/boz.java new file mode 100644 index 0000000000000000000000000000000000000000..7ab5f315a63b510fb4bcda17d387ffd5746a0849 --- /dev/null +++ b/Tests/A2/J2_hierachyCheck24/boz.java @@ -0,0 +1,7 @@ +public interface boz { + + public int f(); + + public int g(); + +} diff --git a/Tests/A2/J2_hierachyCheck24/foo.java b/Tests/A2/J2_hierachyCheck24/foo.java new file mode 100644 index 0000000000000000000000000000000000000000..3e0532ad48761118ebb0e87704df770340c35311 --- /dev/null +++ b/Tests/A2/J2_hierachyCheck24/foo.java @@ -0,0 +1,13 @@ +public class foo implements bar, baz { + + public int g() { + return 9; + } + + public int f() { + return 123; + } + + public foo() {} + +} diff --git a/Tests/A2/J2_hierachyCheck25/Main.java b/Tests/A2/J2_hierachyCheck25/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..3d54f3bc21129efad6ad1451cc02b1d27a136138 --- /dev/null +++ b/Tests/A2/J2_hierachyCheck25/Main.java @@ -0,0 +1,23 @@ +// JOOS1: PARSER_WEEDER,JOOS1_INTERFACE,PARSER_EXCEPTION +// JOOS2: HIERARCHY +/* + boz + interface + / \ + bar baz +abstract interface + f g + \ / + foo +*/ + +public class Main { + + public Main() {} + + public static int test() { + foo f = new foo(); + return f.f(); + } + +} diff --git a/Tests/A2/J2_hierachyCheck25/bar.java b/Tests/A2/J2_hierachyCheck25/bar.java new file mode 100644 index 0000000000000000000000000000000000000000..25062162acfc66ddb26e20f922ee32972f318d97 --- /dev/null +++ b/Tests/A2/J2_hierachyCheck25/bar.java @@ -0,0 +1,6 @@ +public abstract class bar implements boz { + public bar() {} + + public abstract int f(); + +} diff --git a/Tests/A2/J2_hierachyCheck25/baz.java b/Tests/A2/J2_hierachyCheck25/baz.java new file mode 100644 index 0000000000000000000000000000000000000000..8b42ed1d8959c0e403d0eec5024be3f760a83f47 --- /dev/null +++ b/Tests/A2/J2_hierachyCheck25/baz.java @@ -0,0 +1,5 @@ +public interface baz extends boz{ + + public int g(); + +} diff --git a/Tests/A2/J2_hierachyCheck25/boz.java b/Tests/A2/J2_hierachyCheck25/boz.java new file mode 100644 index 0000000000000000000000000000000000000000..a4d266734d25aebe8f81df5caf85c6cbbb37713a --- /dev/null +++ b/Tests/A2/J2_hierachyCheck25/boz.java @@ -0,0 +1,3 @@ +public interface boz { + +} diff --git a/Tests/A2/J2_hierachyCheck25/foo.java b/Tests/A2/J2_hierachyCheck25/foo.java new file mode 100644 index 0000000000000000000000000000000000000000..6065469c4b8f9d12eebae98a83a19866afe3865c --- /dev/null +++ b/Tests/A2/J2_hierachyCheck25/foo.java @@ -0,0 +1,13 @@ +public class foo extends bar implements baz { + + public int f() { + return 123; + } + + public int g() { + return 9; + } + + public foo() {} + +} diff --git a/Tests/A2/J2_interface_omitted_abstract/Interface.java b/Tests/A2/J2_interface_omitted_abstract/Interface.java new file mode 100644 index 0000000000000000000000000000000000000000..9d78fb72d1adf7959d22ce5f65aedbb58c652bef --- /dev/null +++ b/Tests/A2/J2_interface_omitted_abstract/Interface.java @@ -0,0 +1,3 @@ +public interface Interface { + public /*abstract*/ void foo(); +} diff --git a/Tests/A2/J2_interface_omitted_abstract/Main.java b/Tests/A2/J2_interface_omitted_abstract/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..9e4907af3c738557ae1e06cdb6911c38c712864a --- /dev/null +++ b/Tests/A2/J2_interface_omitted_abstract/Main.java @@ -0,0 +1,8 @@ +// JOOS1: PARSER_WEEDER,PARSER_EXCEPTION,JOOS1_INTERFACE +// JOOS2: HIERARCHY + +public class Main { + public Main() {} + public Main(Interface obj) {obj.foo();} + public static int test() {return 123;} +} diff --git a/Tests/A2/Je_12_Fields_StaticNonStatic.java b/Tests/A2/Je_12_Fields_StaticNonStatic.java new file mode 100644 index 0000000000000000000000000000000000000000..e2162592a90069066c0960461aed9e014f614570 --- /dev/null +++ b/Tests/A2/Je_12_Fields_StaticNonStatic.java @@ -0,0 +1,22 @@ +// JOOS1: PARSER_WEEDER,PARSER_EXCEPTION,JOOS1_STATIC_FIELD_DECLARATION +// JOOS2: ENVIRONMENTS,DUPLICATE_FIELD +// JAVAC:UNKNOWN +/** + * Parser/weeder: + *- (Joos 1) No static field declarations allowed + * Environments: + * - (Joos 2) Check that no two fields in the same class + * have the same name. + */ +public class Je_12_Fields_StaticNonStatic { + + public int a = 2; + public static int a = 2; + + public Je_12_Fields_StaticNonStatic() { + } + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/Je_13_Interface_SingleImport_ClashWithClass/List.java b/Tests/A2/Je_13_Interface_SingleImport_ClashWithClass/List.java new file mode 100644 index 0000000000000000000000000000000000000000..719970e5bb00bbc68904b261d3995e03f0fcc371 --- /dev/null +++ b/Tests/A2/Je_13_Interface_SingleImport_ClashWithClass/List.java @@ -0,0 +1,4 @@ +import java.util.List; + +public interface List { +} diff --git a/Tests/A2/Je_13_Interface_SingleImport_ClashWithClass/Main.java b/Tests/A2/Je_13_Interface_SingleImport_ClashWithClass/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..323cecebddf98d741be456ae6bc2a3f9251f8e89 --- /dev/null +++ b/Tests/A2/Je_13_Interface_SingleImport_ClashWithClass/Main.java @@ -0,0 +1,19 @@ +// JOOS1:PARSER_WEEDER,JOOS1_INTERFACE,PARSER_EXCEPTION +// JOOS2:TYPE_LINKING,SINGLE_TYPE_IMPORT_CLASH_WITH_CLASS +// JAVAC:UNKNOWN +/** + * Parser/weeder: + * - (Joos 1) No interfaces allowed + * Hierarchy check: + * - (Joos 2) Check that no single-type-import declarations clash with + * the class (Joos 2: or interface) defined in the same file. + */ +public abstract class Main implements List { + + public Main() { } + + public static int test() { + return 123; + } + +} diff --git a/Tests/A2/Je_14_Interface_DeclaresToString_DifferentReturnType/Interface.java b/Tests/A2/Je_14_Interface_DeclaresToString_DifferentReturnType/Interface.java new file mode 100644 index 0000000000000000000000000000000000000000..eb48dfec84b96a47c4d0e857f875cbbdcd3e82cd --- /dev/null +++ b/Tests/A2/Je_14_Interface_DeclaresToString_DifferentReturnType/Interface.java @@ -0,0 +1,19 @@ +/* Hierarchy: + * ----------------------------------------------------------------------------- + * JLS 9.2: If an interface has no direct superinterfaces, then the interface + * implicitly declares a public abstract member method m with signature s, + * return type r, and throws clause t corresponding to each public instance + * method m with signature s, return type r, and throws clause t declared in + * Object, unless a method with the same signature, same return type, + * and a compatible throws clause is explicitly declared by the interface. + * + * It follows that it is a compile-time error if the interface declares a method + * with the same signature and different return type or incompatible throws + * clause. + * ----------------------------------------------------------------------------- + * String toString() is public on Object, so the void return type is a + * compile-time error + */ +public interface Interface { + public void toString(); +} diff --git a/Tests/A2/Je_14_Interface_DeclaresToString_DifferentReturnType/Main.java b/Tests/A2/Je_14_Interface_DeclaresToString_DifferentReturnType/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..8a7d78ca7b2e095a1b410d87cbf78ddc91476d14 --- /dev/null +++ b/Tests/A2/Je_14_Interface_DeclaresToString_DifferentReturnType/Main.java @@ -0,0 +1,28 @@ +// JOOS1:PARSER_WEEDER,JOOS1_INTERFACE,PARSER_EXCEPTION +// JOOS2:HIERARCHY,DIFFERENT_RETURN_TYPE +// JAVAC:UNKNOWN +/* Hierarchy: + * ----------------------------------------------------------------------------- + * JLS 9.2: If an interface has no direct superinterfaces, then the interface + * implicitly declares a public abstract member method m with signature s, + * return type r, and throws clause t corresponding to each public instance + * method m with signature s, return type r, and throws clause t declared in + * Object, unless a method with the same signature, same return type, + * and a compatible throws clause is explicitly declared by the interface. + * + * It follows that it is a compile-time error if the interface declares a method + * with the same signature and different return type or incompatible throws + * clause. + * ----------------------------------------------------------------------------- + * see Interface.java + * + * String toString() is public on Object, so the void return type is a + * compile-time error + */ +public class Main { + public Main() {} + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/Je_14_Interface_DeclaresToString_ThrowsConflict/Interface.java b/Tests/A2/Je_14_Interface_DeclaresToString_ThrowsConflict/Interface.java new file mode 100644 index 0000000000000000000000000000000000000000..5fb4841b5106b70701893f0e77f3531c73c43d14 --- /dev/null +++ b/Tests/A2/Je_14_Interface_DeclaresToString_ThrowsConflict/Interface.java @@ -0,0 +1,19 @@ +/* Hierarchy: + * ----------------------------------------------------------------------------- + * JLS 9.2: If an interface has no direct superinterfaces, then the interface + * implicitly declares a public abstract member method m with signature s, + * return type r, and throws clause t corresponding to each public instance + * method m with signature s, return type r, and throws clause t declared in + * Object, unless a method with the same signature, same return type, + * and a compatible throws clause is explicitly declared by the interface. + * + * It follows that it is a compile-time error if the interface declares a method + * with the same signature and different return type or incompatible throws + * clause. + * ----------------------------------------------------------------------------- + * String toString() is public on Object (with no throws-clause), so the + * incompatible type is a compile-time error + */ +public interface Interface { + public Object toString(); +} diff --git a/Tests/A2/Je_14_Interface_DeclaresToString_ThrowsConflict/Main.java b/Tests/A2/Je_14_Interface_DeclaresToString_ThrowsConflict/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..75b87222d69674d55d3aca0777a0f45d0980a24e --- /dev/null +++ b/Tests/A2/Je_14_Interface_DeclaresToString_ThrowsConflict/Main.java @@ -0,0 +1,28 @@ +// JOOS1:PARSER_WEEDER,JOOS1_INTERFACE,PARSER_EXCEPTION +// JOOS2:HIERARCHY,ILLEGAL_THROWS_IN_REPLACE +// JAVAC:UNKNOWN +/* Hierarchy: + * ----------------------------------------------------------------------------- + * JLS 9.2: If an interface has no direct superinterfaces, then the interface + * implicitly declares a public abstract member method m with signature s, + * return type r, and throws clause t corresponding to each public instance + * method m with signature s, return type r, and throws clause t declared in + * Object, unless a method with the same signature, same return type, + * and a compatible throws clause is explicitly declared by the interface. + * + * It follows that it is a compile-time error if the interface declares a method + * with the same signature and different return type or incompatible throws + * clause. + * ----------------------------------------------------------------------------- + * see Interface.java + * + * String toString() is public on Object (with no throws-clause), so the + * incompatible type is a compile-time error + */ +public class Main { + public Main() {} + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/Je_14_Interface_DuplicateMethodDeclare.java b/Tests/A2/Je_14_Interface_DuplicateMethodDeclare.java new file mode 100644 index 0000000000000000000000000000000000000000..9f4bf6b5c1726dfa2c7c351a67e9a1b64a38feab --- /dev/null +++ b/Tests/A2/Je_14_Interface_DuplicateMethodDeclare.java @@ -0,0 +1,18 @@ +// JOOS1: PARSER_WEEDER,JOOS1_INTERFACE,PARSER_EXCEPTION +// JOOS2: HIERARCHY,DUPLICATE_METHOD +// JAVAC:UNKNOWN +/** + * Parser/weeder: + * - (Joos 1) No interfaces allowed + * Hierarchy check: + * - (Joos 2) A class or interface must not declare two methods with + * the same name and parameter types (8.4, 9.4, well-formedness + * constraint 2). + */ +public interface Je_14_Interface_DuplicateMethodDeclare { + + public void foo(); + + public void foo(); + +} diff --git a/Tests/A2/Je_14_Interface_ImplicitPublicMethod_ProtectedOverride/Foo.java b/Tests/A2/Je_14_Interface_ImplicitPublicMethod_ProtectedOverride/Foo.java new file mode 100644 index 0000000000000000000000000000000000000000..ea4c81314482f7649afd3d76d604f85b81bc3388 --- /dev/null +++ b/Tests/A2/Je_14_Interface_ImplicitPublicMethod_ProtectedOverride/Foo.java @@ -0,0 +1,5 @@ +public interface Foo { + + public void bleh(); + +} diff --git a/Tests/A2/Je_14_Interface_ImplicitPublicMethod_ProtectedOverride/Main.java b/Tests/A2/Je_14_Interface_ImplicitPublicMethod_ProtectedOverride/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..41b310833cada4a265f50a93f9ebe9267bfce4dd --- /dev/null +++ b/Tests/A2/Je_14_Interface_ImplicitPublicMethod_ProtectedOverride/Main.java @@ -0,0 +1,20 @@ +// JOOS1:PARSER_WEEDER,JOOS1_INTERFACE,PARSER_EXCEPTION +// JOOS2:HIERARCHY,PROTECTED_REPLACE_PUBLIC +// JAVAC:UNKNOWN +/** + * Parser/weeder: + * - (Joos 1) No interfaces allowed + * Hierarchy check: + * - (Joos 2) A protected method must not override a public method + * (8.4.6.3). (Interface methods are implicitly public). + */ +public abstract class Main implements Foo{ + + public Main() { } + + public static int test() { + return 123; + } + + protected abstract void bleh(); +} diff --git a/Tests/A2/Je_14_Interface_SelfDependency_CyclicExtend/Bar.java b/Tests/A2/Je_14_Interface_SelfDependency_CyclicExtend/Bar.java new file mode 100644 index 0000000000000000000000000000000000000000..59266af4942b4c11e14393ec9d25089166e30c57 --- /dev/null +++ b/Tests/A2/Je_14_Interface_SelfDependency_CyclicExtend/Bar.java @@ -0,0 +1,2 @@ +public interface Bar extends Foo{ +} diff --git a/Tests/A2/Je_14_Interface_SelfDependency_CyclicExtend/Foo.java b/Tests/A2/Je_14_Interface_SelfDependency_CyclicExtend/Foo.java new file mode 100644 index 0000000000000000000000000000000000000000..670d47aa554977b11fd63c40d6a1b8be2fadd306 --- /dev/null +++ b/Tests/A2/Je_14_Interface_SelfDependency_CyclicExtend/Foo.java @@ -0,0 +1,2 @@ +public interface Foo extends Bar { +} diff --git a/Tests/A2/Je_14_Interface_SelfDependency_CyclicExtend/Main.java b/Tests/A2/Je_14_Interface_SelfDependency_CyclicExtend/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..85ab97bd519d0b44fa08f03bb80059eb7abc1b71 --- /dev/null +++ b/Tests/A2/Je_14_Interface_SelfDependency_CyclicExtend/Main.java @@ -0,0 +1,19 @@ +// JOOS1:PARSER_WEEDER,JOOS1_INTERFACE,PARSER_EXCEPTION +// JOOS2:HIERARCHY,CIRCULAR_INHERITANCE +// JAVAC:UNKNOWN +/** + * Parser/weeder: + * - (Joos 1) No interfaces allowed + * Hierarchy check: + * - (Joos 2) A class or interface must not depend on itself + * (8.1.3, 9.1.2) + */ +public class Main{ + public Main() { + } + + public static int test(){ + return 123; + } + +} diff --git a/Tests/A2/Je_14_Interface_SelfDependency_ExtendsItself.java b/Tests/A2/Je_14_Interface_SelfDependency_ExtendsItself.java new file mode 100644 index 0000000000000000000000000000000000000000..9ce12ea1b7124365226ff79eb319288f3d3415d4 --- /dev/null +++ b/Tests/A2/Je_14_Interface_SelfDependency_ExtendsItself.java @@ -0,0 +1,13 @@ +// JOOS1: PARSER_WEEDER,JOOS1_INTERFACE,PARSER_EXCEPTION +// JOOS2: HIERARCHY,CIRCULAR_INHERITANCE +// JAVAC:UNKNOWN +/** + * Parser/weeder: + * - (Joos 1) No interfaces allowed + * Hierarchy: + * - (Joos 2) A class or interface must not depend on itself (8.1.3, + * 9.1.2, well-formedness constraint 1). + */ +public interface Je_14_Interface_SelfDependency_ExtendsItself extends Je_14_Interface_SelfDependency_ExtendsItself { + +} diff --git a/Tests/A2/Je_2_ConstructorParameter_Duplicate.java b/Tests/A2/Je_2_ConstructorParameter_Duplicate.java new file mode 100644 index 0000000000000000000000000000000000000000..554ff9ed7d409a95e277e92d90cefadd4649e886 --- /dev/null +++ b/Tests/A2/Je_2_ConstructorParameter_Duplicate.java @@ -0,0 +1,18 @@ +// JOOS1:ENVIRONMENTS,DUPLICATE_VARIABLE +// JOOS2:ENVIRONMENTS,DUPLICATE_VARIABLE +// JAVAC:UNKNOWN +// +/** + * Environments: + * - Check that no two local variables with overlapping scope have the + * same name. + */ +public class Je_2_ConstructorParameter_Duplicate { + + public Je_2_ConstructorParameter_Duplicate (String f, int f) {} + + public static int test() { + return 123; + } + +} diff --git a/Tests/A2/Je_2_ConstructorParameter_Overlapping.java b/Tests/A2/Je_2_ConstructorParameter_Overlapping.java new file mode 100644 index 0000000000000000000000000000000000000000..ba42872d68d7d67ef6dae4af8c18f67275f2fa46 --- /dev/null +++ b/Tests/A2/Je_2_ConstructorParameter_Overlapping.java @@ -0,0 +1,22 @@ +// JOOS1:ENVIRONMENTS,DUPLICATE_VARIABLE +// JOOS2:ENVIRONMENTS,DUPLICATE_VARIABLE +// JAVAC:UNKNOWN +// +/** + * Environments: + * - Check that no two local variables with overlapping scope have the + * same name. + */ +public class Je_2_ConstructorParameter_Overlapping { + + public Je_2_ConstructorParameter_Overlapping (Object o) { + { + Object o = new Object(); + } + } + + public static int test() { + return 123; + } + +} diff --git a/Tests/A2/Je_2_DuplicateType/Bar.java b/Tests/A2/Je_2_DuplicateType/Bar.java new file mode 100644 index 0000000000000000000000000000000000000000..02e894734d77525e7fcaed41e2f299a964f72b98 --- /dev/null +++ b/Tests/A2/Je_2_DuplicateType/Bar.java @@ -0,0 +1,5 @@ +package foo; + +public class Bar { + public Bar() {} +} diff --git a/Tests/A2/Je_2_DuplicateType/Main.java b/Tests/A2/Je_2_DuplicateType/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..498a35123c04724b1caf4c0cd370dd92cd6f93d8 --- /dev/null +++ b/Tests/A2/Je_2_DuplicateType/Main.java @@ -0,0 +1,14 @@ +//JOOS1: ENVIRONMENTS,DUPLICATE_TYPE +//JOOS2: ENVIRONMENTS,DUPLICATE_TYPE +//JAVAC: UNKNOWN + +/** + * The type foo.Bar is declared twice. + */ +public class Main { + public Main() {} + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/Je_2_DuplicateType/foo/Bar.java b/Tests/A2/Je_2_DuplicateType/foo/Bar.java new file mode 100644 index 0000000000000000000000000000000000000000..02e894734d77525e7fcaed41e2f299a964f72b98 --- /dev/null +++ b/Tests/A2/Je_2_DuplicateType/foo/Bar.java @@ -0,0 +1,5 @@ +package foo; + +public class Bar { + public Bar() {} +} diff --git a/Tests/A2/Je_2_Fields_DifferentAccess.java b/Tests/A2/Je_2_Fields_DifferentAccess.java new file mode 100644 index 0000000000000000000000000000000000000000..2670e5599b4ff6c7606f8fdfe9a6ca502b80871f --- /dev/null +++ b/Tests/A2/Je_2_Fields_DifferentAccess.java @@ -0,0 +1,21 @@ +// JOOS1:ENVIRONMENTS,DUPLICATE_FIELD +// JOOS2:ENVIRONMENTS,DUPLICATE_FIELD +// JAVAC:UNKNOWN +// +/** + * - Environments + * Check that no two fields in the same class have the same name. + */ +public class Je_2_Fields_DifferentAccess { + + public Object o; + + public Je_2_Fields_DifferentAccess () {} + + public static int test() { + return 123; + } + + protected Object o; + +} diff --git a/Tests/A2/Je_2_Fields_DifferentTypes.java b/Tests/A2/Je_2_Fields_DifferentTypes.java new file mode 100644 index 0000000000000000000000000000000000000000..827bee302f2f5a67ff7485421b3c339939eb6a16 --- /dev/null +++ b/Tests/A2/Je_2_Fields_DifferentTypes.java @@ -0,0 +1,21 @@ +// JOOS1:ENVIRONMENTS,DUPLICATE_FIELD +// JOOS2:ENVIRONMENTS,DUPLICATE_FIELD +// JAVAC:UNKNOWN +// +/** + * - Environments + * Check that no two fields in the same class have the same name. + */ +public class Je_2_Fields_DifferentTypes { + + public Object foo; + + public String foo; + + public Je_2_Fields_DifferentTypes () {} + + public static int test() { + return 123; + } + +} diff --git a/Tests/A2/Je_2_Fields_MultipleFields.java b/Tests/A2/Je_2_Fields_MultipleFields.java new file mode 100644 index 0000000000000000000000000000000000000000..82e91f68dff31bdb2e03923dc88ca8a69770821f --- /dev/null +++ b/Tests/A2/Je_2_Fields_MultipleFields.java @@ -0,0 +1,24 @@ +// JOOS1:ENVIRONMENTS,DUPLICATE_FIELD +// JOOS2:ENVIRONMENTS,DUPLICATE_FIELD +// JAVAC:UNKNOWN +// +/** + * - Environments + * Check that no two fields in the same class have the same name. + */ +public class Je_2_Fields_MultipleFields { + + public int foo; + + public int bar; + + public int baz; + + public int foo; + + public Je_2_Fields_MultipleFields() { } + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/Je_2_Locals_Overlapping_DeeplyNested.java b/Tests/A2/Je_2_Locals_Overlapping_DeeplyNested.java new file mode 100644 index 0000000000000000000000000000000000000000..2e452fc8ac93309799367e7e985ba53e0aee4137 --- /dev/null +++ b/Tests/A2/Je_2_Locals_Overlapping_DeeplyNested.java @@ -0,0 +1,23 @@ +// JOOS1:ENVIRONMENTS,DUPLICATE_VARIABLE +// JOOS2:ENVIRONMENTS,DUPLICATE_VARIABLE +// JAVAC:UNKNOWN +// +/** + * Environments: + * - Check that no two local variables with overlapping scope have the + * same name. + */ +public class Je_2_Locals_Overlapping_DeeplyNested { + public Je_2_Locals_Overlapping_DeeplyNested() {} + + public static int test() { + int a = 123; + boolean b = true; + boolean c = true; + boolean d = true; + boolean e = true; + boolean f = true; + if (b) if (c) if (d) if (e) if (f) { int a = 43; return a+80; } + return a; + } +} diff --git a/Tests/A2/Je_2_Locals_Overlapping_ForInitializer.java b/Tests/A2/Je_2_Locals_Overlapping_ForInitializer.java new file mode 100644 index 0000000000000000000000000000000000000000..0106d7f8f45457ba21b0de7605b92bc869850aee --- /dev/null +++ b/Tests/A2/Je_2_Locals_Overlapping_ForInitializer.java @@ -0,0 +1,21 @@ +// JOOS1:ENVIRONMENTS,DUPLICATE_VARIABLE +// JOOS2:ENVIRONMENTS,DUPLICATE_VARIABLE +// JAVAC:UNKNOWN +// +/** + * Environments: + * - Check that no two local variables with overlapping scope have the + * same name. + */ +public class Je_2_Locals_Overlapping_ForInitializer { + + public Je_2_Locals_Overlapping_ForInitializer() {} + + public static int test() { + int r = 0; + for (int r = 0; r < 42; r = r + 1) { + r = r + 1; + } + return 123; + } +} diff --git a/Tests/A2/Je_2_Locals_Overlapping_InConditionalElse.java b/Tests/A2/Je_2_Locals_Overlapping_InConditionalElse.java new file mode 100644 index 0000000000000000000000000000000000000000..bf849065719f7cb99ee296b133b33d96478722d1 --- /dev/null +++ b/Tests/A2/Je_2_Locals_Overlapping_InConditionalElse.java @@ -0,0 +1,24 @@ +// JOOS1:ENVIRONMENTS,DUPLICATE_VARIABLE +// JOOS2:ENVIRONMENTS,DUPLICATE_VARIABLE +// JAVAC:UNKNOWN +// +/** + * Environments: + * - Check that no two local variables with overlapping scope have the + * same name. + */ +public class Je_2_Locals_Overlapping_InConditionalElse { + + public Je_2_Locals_Overlapping_InConditionalElse() {} + + public static int test() { + int r = 0; + if (r >= 1) { + r = 4; + } + else { + int r = 1; + } + return 123; + } +} diff --git a/Tests/A2/Je_2_Locals_Overlapping_InConditionalThen.java b/Tests/A2/Je_2_Locals_Overlapping_InConditionalThen.java new file mode 100644 index 0000000000000000000000000000000000000000..19a1b7a983364577fe506d29691e20ea331af899 --- /dev/null +++ b/Tests/A2/Je_2_Locals_Overlapping_InConditionalThen.java @@ -0,0 +1,21 @@ +// JOOS1:ENVIRONMENTS,DUPLICATE_VARIABLE +// JOOS2:ENVIRONMENTS,DUPLICATE_VARIABLE +// JAVAC:UNKNOWN +// +/** + * Environments: + * - Check that no two local variables with overlapping scope have the + * same name. + */ +public class Je_2_Locals_Overlapping_InConditionalThen { + + public Je_2_Locals_Overlapping_InConditionalThen() {} + + public static int test() { + int r = 0; + if (r >= 1) { + int r = 1; + } + return 123; + } +} diff --git a/Tests/A2/Je_2_Locals_Overlapping_InsideDoubleBlock.java b/Tests/A2/Je_2_Locals_Overlapping_InsideDoubleBlock.java new file mode 100644 index 0000000000000000000000000000000000000000..e24ec8e0f7b2a4ae756d3cd37ef269818fc9a4e0 --- /dev/null +++ b/Tests/A2/Je_2_Locals_Overlapping_InsideDoubleBlock.java @@ -0,0 +1,23 @@ +// JOOS1:ENVIRONMENTS,DUPLICATE_VARIABLE +// JOOS2:ENVIRONMENTS,DUPLICATE_VARIABLE +// JAVAC:UNKNOWN +// +/** + * Environments: + * - Check that no two local variables with overlapping scope have the + * same name. + */ +public class Je_2_Locals_Overlapping_InsideDoubleBlock { + + public Je_2_Locals_Overlapping_InsideDoubleBlock() {} + + public static int test() { + int r = 0; + { + { + int r = 123; + return r; + } + } + } +} diff --git a/Tests/A2/Je_2_Locals_Overlapping_InsideLoop.java b/Tests/A2/Je_2_Locals_Overlapping_InsideLoop.java new file mode 100644 index 0000000000000000000000000000000000000000..5e8d70d65bebe9b0d51e5a2a7fc187ecf10a6368 --- /dev/null +++ b/Tests/A2/Je_2_Locals_Overlapping_InsideLoop.java @@ -0,0 +1,21 @@ +// JOOS1:ENVIRONMENTS,DUPLICATE_VARIABLE +// JOOS2:ENVIRONMENTS,DUPLICATE_VARIABLE +// JAVAC:UNKNOWN +// +/** + * Environments: + * - Check that no two local variables with overlapping scope have the + * same name. + */ +public class Je_2_Locals_Overlapping_InsideLoop { + + public Je_2_Locals_Overlapping_InsideLoop() {} + + public static int test() { + int r = 0; + while (r > 0){ + int r = 1; + } + return 123; + } +} diff --git a/Tests/A2/Je_2_Locals_Overlapping_InsideNewBlock.java b/Tests/A2/Je_2_Locals_Overlapping_InsideNewBlock.java new file mode 100644 index 0000000000000000000000000000000000000000..eb51beda7880b29b2da2fafc3c4c4f0b11a35896 --- /dev/null +++ b/Tests/A2/Je_2_Locals_Overlapping_InsideNewBlock.java @@ -0,0 +1,21 @@ +// JOOS1:ENVIRONMENTS,DUPLICATE_VARIABLE +// JOOS2:ENVIRONMENTS,DUPLICATE_VARIABLE +// JAVAC:UNKNOWN +// +/** + * Environments: + * - Check that no two local variables with overlapping scope have the + * same name. + */ +public class Je_2_Locals_Overlapping_InsideNewBlock { + + public Je_2_Locals_Overlapping_InsideNewBlock() {} + + public static int test() { + int r = 0; + { + int r = 1; + } + return 123; + } +} diff --git a/Tests/A2/Je_2_Locals_Overlapping_SameLevel.java b/Tests/A2/Je_2_Locals_Overlapping_SameLevel.java new file mode 100644 index 0000000000000000000000000000000000000000..c77153b6801bfa9f1d0b17f8f747d7d05e6c9a88 --- /dev/null +++ b/Tests/A2/Je_2_Locals_Overlapping_SameLevel.java @@ -0,0 +1,19 @@ +// JOOS1:ENVIRONMENTS,DUPLICATE_VARIABLE +// JOOS2:ENVIRONMENTS,DUPLICATE_VARIABLE +// JAVAC:UNKNOWN +// +/** + * Environments: + * - Check that no two local variables with overlapping scope have the + * same name. + */ +public class Je_2_Locals_Overlapping_SameLevel { + + public Je_2_Locals_Overlapping_SameLevel() {} + + public static int test() { + int r = 0; + int r = 1; + return 123; + } +} diff --git a/Tests/A2/Je_2_Locals_Overlapping_SameLine.java b/Tests/A2/Je_2_Locals_Overlapping_SameLine.java new file mode 100644 index 0000000000000000000000000000000000000000..fad7d769d6ab8690ccb49323525aae55c2a866e1 --- /dev/null +++ b/Tests/A2/Je_2_Locals_Overlapping_SameLine.java @@ -0,0 +1,20 @@ +// JOOS1:ENVIRONMENTS,DUPLICATE_VARIABLE +// JOOS2:ENVIRONMENTS,DUPLICATE_VARIABLE +// JAVAC:UNKNOWN +// +/** + * Environments: + * - Two different locals with the same name may not have overlapping + * scopes. + */ +public class Je_2_Locals_Overlapping_SameLine{ + + public Je_2_Locals_Overlapping_SameLine(){} + + public static int test(){ + int a = 42; + int b = 12; {int b = 123; a = a + b;} + return a - b - 30 ; + } + +} diff --git a/Tests/A2/Je_2_Parameter_AbstractDeclaredTwice.java b/Tests/A2/Je_2_Parameter_AbstractDeclaredTwice.java new file mode 100644 index 0000000000000000000000000000000000000000..81dee9b828491f6ce809fd76b042b32147f580c4 --- /dev/null +++ b/Tests/A2/Je_2_Parameter_AbstractDeclaredTwice.java @@ -0,0 +1,12 @@ +//JOOS1:ENVIRONMENTS,DUPLICATE_VARIABLE +//JOOS2:ENVIRONMENTS,DUPLICATE_VARIABLE +//JAVAC:UNKNOWN +public abstract class Je_2_Parameter_AbstractDeclaredTwice { + public Je_2_Parameter_AbstractDeclaredTwice() {} + + public abstract void foo(Object x, java.lang.Object x); + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/Je_2_Parameter_OverlappingWithLocal.java b/Tests/A2/Je_2_Parameter_OverlappingWithLocal.java new file mode 100644 index 0000000000000000000000000000000000000000..2c803f2c2baa00ec441f0bb4ee12e049028c0457 --- /dev/null +++ b/Tests/A2/Je_2_Parameter_OverlappingWithLocal.java @@ -0,0 +1,22 @@ +// JOOS1:ENVIRONMENTS,DUPLICATE_VARIABLE +// JOOS2:ENVIRONMENTS,DUPLICATE_VARIABLE +// JAVAC:UNKNOWN +// +/** + * Environments: + * - Check that no two local variables with overlapping scope have the + * same name. + */ +public class Je_2_Parameter_OverlappingWithLocal { + + public Je_2_Parameter_OverlappingWithLocal() {} + + public void m(Object o) { + Object o = new Object(); + } + + public static int test() { + return 123; + } + +} diff --git a/Tests/A2/Je_2_Parameter_OverlappingWithLocalInConditional.java b/Tests/A2/Je_2_Parameter_OverlappingWithLocalInConditional.java new file mode 100644 index 0000000000000000000000000000000000000000..8452c6a7f78da20c9a02329752729bbdf851a17a --- /dev/null +++ b/Tests/A2/Je_2_Parameter_OverlappingWithLocalInConditional.java @@ -0,0 +1,24 @@ +// JOOS1:ENVIRONMENTS,DUPLICATE_VARIABLE +// JOOS2:ENVIRONMENTS,DUPLICATE_VARIABLE +// JAVAC:UNKNOWN +// +/** + * Environments: + * - Check that no two local variables with overlapping scope have the + * same name. + */ +public class Je_2_Parameter_OverlappingWithLocalInConditional { + + public Je_2_Parameter_OverlappingWithLocalInConditional() {} + + public void m(Object o) { + if (o.equals(o)){ + Object o = new Object(); + } + } + + public static int test() { + return 123; + } + +} diff --git a/Tests/A2/Je_2_Parameter_OverlappingWithLocalInLoop.java b/Tests/A2/Je_2_Parameter_OverlappingWithLocalInLoop.java new file mode 100644 index 0000000000000000000000000000000000000000..bdd8d6df2cc38becfb1fa90519fd31883e386843 --- /dev/null +++ b/Tests/A2/Je_2_Parameter_OverlappingWithLocalInLoop.java @@ -0,0 +1,24 @@ +// JOOS1:ENVIRONMENTS,DUPLICATE_VARIABLE +// JOOS2:ENVIRONMENTS,DUPLICATE_VARIABLE +// JAVAC:UNKNOWN +// +/** + * Environments: + * - Check that no two local variables with overlapping scope have the + * same name. + */ +public class Je_2_Parameter_OverlappingWithLocalInLoop { + + public Je_2_Parameter_OverlappingWithLocalInLoop() {} + + public void m(Object o) { + while (o.equals(o)){ + Object o = new Object(); + } + } + + public static int test() { + return 123; + } + +} diff --git a/Tests/A2/Je_2_Parameter_OverlappingWithLocalInsideNewBlock.java b/Tests/A2/Je_2_Parameter_OverlappingWithLocalInsideNewBlock.java new file mode 100644 index 0000000000000000000000000000000000000000..871becbec3e09655c5f66102a17ee813cb60a314 --- /dev/null +++ b/Tests/A2/Je_2_Parameter_OverlappingWithLocalInsideNewBlock.java @@ -0,0 +1,24 @@ +// JOOS1:ENVIRONMENTS,DUPLICATE_VARIABLE +// JOOS2:ENVIRONMENTS,DUPLICATE_VARIABLE +// JAVAC:UNKNOWN +// +/** + * Environments: + * - Check that no two local variables with overlapping scope have the + * same name. + */ +public class Je_2_Parameter_OverlappingWithLocalInsideNewBlock { + + public Je_2_Parameter_OverlappingWithLocalInsideNewBlock() {} + + public void m(Object o) { + { + Object o = new Object(); + } + } + + public static int test() { + return 123; + } + +} diff --git a/Tests/A2/Je_2_Parameter_OverlappingWithLocalNotFirst.java b/Tests/A2/Je_2_Parameter_OverlappingWithLocalNotFirst.java new file mode 100644 index 0000000000000000000000000000000000000000..21a6573cfa27f571a01051849d8fb69fccc15372 --- /dev/null +++ b/Tests/A2/Je_2_Parameter_OverlappingWithLocalNotFirst.java @@ -0,0 +1,23 @@ +// JOOS1:ENVIRONMENTS,DUPLICATE_VARIABLE +// JOOS2:ENVIRONMENTS,DUPLICATE_VARIABLE +// JAVAC:UNKNOWN +// +/** + * Environments: + * - Check that no two local variables with overlapping scope have the + * same name. + */ +public class Je_2_Parameter_OverlappingWithLocalNotFirst { + + public Je_2_Parameter_OverlappingWithLocalNotFirst() {} + + public void m(Object o) { + int p = 0; + Object o = new Object(); + } + + public static int test() { + return 123; + } + +} diff --git a/Tests/A2/Je_2_Parameter_OverlappingWithParameter.java b/Tests/A2/Je_2_Parameter_OverlappingWithParameter.java new file mode 100644 index 0000000000000000000000000000000000000000..b871e101082dd2cddac30f486fe1f353f465f830 --- /dev/null +++ b/Tests/A2/Je_2_Parameter_OverlappingWithParameter.java @@ -0,0 +1,21 @@ +// JOOS1:ENVIRONMENTS,DUPLICATE_VARIABLE +// JOOS2:ENVIRONMENTS,DUPLICATE_VARIABLE +// JAVAC:UNKNOWN +// +/** + * Environments: + * - Check that no two local variables with overlapping scope have the + * same name. + */ +public class Je_2_Parameter_OverlappingWithParameter { + + public Je_2_Parameter_OverlappingWithParameter() {} + + public void m(Object o, int p, String o) { + } + + public static int test() { + return 123; + } + +} diff --git a/Tests/A2/Je_3_ImportOnDemand_ClashWithImplicitImport/Integer.java b/Tests/A2/Je_3_ImportOnDemand_ClashWithImplicitImport/Integer.java new file mode 100644 index 0000000000000000000000000000000000000000..457e82417fa5dd3edc37ae3805353864b3899ff9 --- /dev/null +++ b/Tests/A2/Je_3_ImportOnDemand_ClashWithImplicitImport/Integer.java @@ -0,0 +1,17 @@ +package bar; + +public class Integer { + + public int x; + + public Integer(int y) { + x = 123; + } + + public int intValue() { + return x; + } + +} + + diff --git a/Tests/A2/Je_3_ImportOnDemand_ClashWithImplicitImport/Main.java b/Tests/A2/Je_3_ImportOnDemand_ClashWithImplicitImport/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..9a1a05ef0a3ca7e230ebc29dff3663260cc5944a --- /dev/null +++ b/Tests/A2/Je_3_ImportOnDemand_ClashWithImplicitImport/Main.java @@ -0,0 +1,26 @@ +// JOOS1:TYPE_LINKING,AMBIGUOUS_CLASS_NAME +// JOOS2:TYPE_LINKING,AMBIGUOUS_CLASS_NAME +// JAVAC:UNKNOWN +// +/** + * Typelinking: + * - Unqualified names are handled by these rules: + * 1. try the enclosing class or interface + * 2. try any single-type-import (A.B.C.D) + * 3. try the same package + * 4. try any import-on-demand package (A.B.C.*), including java.lang.* + * + * This testcase tests item 4. + */ +import bar.*; + +public class Main { + + public Main() {} + + public static int test() { + return new Integer(123).intValue(); + } + +} + diff --git a/Tests/A2/Je_3_ImportOnDemand_ClassInMultiplePackages/Main.java b/Tests/A2/Je_3_ImportOnDemand_ClassInMultiplePackages/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..9febab44a9dc8bd01c5a1d0cb6d02f8e0789d423 --- /dev/null +++ b/Tests/A2/Je_3_ImportOnDemand_ClassInMultiplePackages/Main.java @@ -0,0 +1,21 @@ +// JOOS1:TYPE_LINKING,AMBIGUOUS_CLASS_NAME +// JOOS2:TYPE_LINKING,AMBIGUOUS_CLASS_NAME +// JAVAC:UNKNOWN +// +/** + * TypeLinking + * - Class Date can be found in both package java.util and package + * java.sql. + */ +import java.util.*; +import java.sql.*; + +public class Main { + + public Main() { } + + public static int test() { + Date d = new Date(); + return 123; + } +} diff --git a/Tests/A2/Je_3_ImportOnDemand_ClassInMultiplePackages/java/sql/Date.java b/Tests/A2/Je_3_ImportOnDemand_ClassInMultiplePackages/java/sql/Date.java new file mode 100644 index 0000000000000000000000000000000000000000..e8db49919eb7b8214cdcf9586f203be53b5b0c7f --- /dev/null +++ b/Tests/A2/Je_3_ImportOnDemand_ClassInMultiplePackages/java/sql/Date.java @@ -0,0 +1,5 @@ +package java.sql; +public class Date { + public Date() { + } +} diff --git a/Tests/A2/Je_3_ImportOnDemand_ClassInMultiplePackages/java/util/Date.java b/Tests/A2/Je_3_ImportOnDemand_ClassInMultiplePackages/java/util/Date.java new file mode 100644 index 0000000000000000000000000000000000000000..3b90d9590cac189520df0bbe9066b35c848fa4d1 --- /dev/null +++ b/Tests/A2/Je_3_ImportOnDemand_ClassInMultiplePackages/java/util/Date.java @@ -0,0 +1,5 @@ +package java.util; +public class Date { + public Date() { + } +} diff --git a/Tests/A2/Je_3_ImportOnDemand_ClassNameAsPackage/A.java b/Tests/A2/Je_3_ImportOnDemand_ClassNameAsPackage/A.java new file mode 100644 index 0000000000000000000000000000000000000000..f68b7ce4d6004894e632f823e50043322feb30b4 --- /dev/null +++ b/Tests/A2/Je_3_ImportOnDemand_ClassNameAsPackage/A.java @@ -0,0 +1,11 @@ +/* TypeLinking: + * Check that all import-on-demand declarations refer to existing packages. + * + * Main is not a package + */ + +import Main.*; + +public class A { + public A() {} +} diff --git a/Tests/A2/Je_3_ImportOnDemand_ClassNameAsPackage/Main.java b/Tests/A2/Je_3_ImportOnDemand_ClassNameAsPackage/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..cb7fa9d5223fd93199a199de0c74ca69afaf7866 --- /dev/null +++ b/Tests/A2/Je_3_ImportOnDemand_ClassNameAsPackage/Main.java @@ -0,0 +1,17 @@ +// JOOS1:TYPE_LINKING,NON_EXISTING_PACKAGE +// JOOS2:TYPE_LINKING,NON_EXISTING_PACKAGE +// JAVAC:UNKNOWN +// +/* TypeLinking: + * Check that all import-on-demand declarations refer to existing packages. + * + * Main is not a package (see A.java) + */ + +public class Main { + public Main() {} + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/Je_3_ImportOnDemand_NonExisting.java b/Tests/A2/Je_3_ImportOnDemand_NonExisting.java new file mode 100644 index 0000000000000000000000000000000000000000..6f07c42b675acaad84485ef7a7c477c0b918568b --- /dev/null +++ b/Tests/A2/Je_3_ImportOnDemand_NonExisting.java @@ -0,0 +1,20 @@ +// JOOS1:TYPE_LINKING,NON_EXISTING_PACKAGE +// JOOS2:TYPE_LINKING,NON_EXISTING_PACKAGE +// JAVAC:UNKNOWN +// +/** + * Type linking: + * - Check that all import-on-demand declarations refer to existing + * packages. + */ +import java.Util.*; + +public class Je_3_ImportOnDemand_NonExisting { + + public Je_3_ImportOnDemand_NonExisting () {} + + public static int test() { + return 123; + } + +} diff --git a/Tests/A2/Je_3_ImportOnDemand_NonExistingPackage_FromPreviousTestcase.java b/Tests/A2/Je_3_ImportOnDemand_NonExistingPackage_FromPreviousTestcase.java new file mode 100644 index 0000000000000000000000000000000000000000..de72f2c3ba8ca35f2a48abce612d5ee6e05beb61 --- /dev/null +++ b/Tests/A2/Je_3_ImportOnDemand_NonExistingPackage_FromPreviousTestcase.java @@ -0,0 +1,13 @@ +//JOOS1:TYPE_LINKING,NON_EXISTING_PACKAGE +//JOOS2:TYPE_LINKING,NON_EXISTING_PACKAGE +//JAVAC:UNKNOWN + +import Test.*; + +public class Je_3_ImportOnDemand_NonExistingPackage_FromPreviousTestcase { + public Je_3_ImportOnDemand_NonExistingPackage_FromPreviousTestcase() {} + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/Je_3_ImportOnDemand_PackagePrefixExists/Main.java b/Tests/A2/Je_3_ImportOnDemand_PackagePrefixExists/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..04dc998d287cba8211e57180102c17fddaf5e371 --- /dev/null +++ b/Tests/A2/Je_3_ImportOnDemand_PackagePrefixExists/Main.java @@ -0,0 +1,19 @@ +// JOOS1:TYPE_LINKING,NON_EXISTING_PACKAGE +// JOOS2:TYPE_LINKING,NON_EXISTING_PACKAGE +// JAVAC:UNKNOWN +// +/* TypeLinking: + * Check that all import-on-demand declarations refer to existing packages. + * + * java.util.foo does not exist, but java.util does. + */ + +import java.util.foo.*; + +public class Main { + public Main() {} + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/Je_3_ImportOnDemand_PackagePrefixExists/java/util/Date.java b/Tests/A2/Je_3_ImportOnDemand_PackagePrefixExists/java/util/Date.java new file mode 100644 index 0000000000000000000000000000000000000000..3b90d9590cac189520df0bbe9066b35c848fa4d1 --- /dev/null +++ b/Tests/A2/Je_3_ImportOnDemand_PackagePrefixExists/java/util/Date.java @@ -0,0 +1,5 @@ +package java.util; +public class Date { + public Date() { + } +} diff --git a/Tests/A2/Je_3_PackageClashWithType_Explicit/Main.java b/Tests/A2/Je_3_PackageClashWithType_Explicit/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..ff29ba9adba216a88a254e41f4c08584ffe57b01 --- /dev/null +++ b/Tests/A2/Je_3_PackageClashWithType_Explicit/Main.java @@ -0,0 +1,23 @@ +//TYPE_LINKING +//JOOS1:PREFIX_RESOLVES_TO_TYPE +//JOOS2:PREFIX_RESOLVES_TO_TYPE +//JAVAC:UNKNOWN + + +/** + * TypeLinking: + * Check that no prefixes (consisting of whole identifiers) of + * fully qualified types themselves resolve to types. + * + * The prefix 'javax.swing.tree' of the fully qualified type + * javax.swing.tree.TreeNode is itself a type. + */ + +public class Main { + public Main() {} + + public static int test() { + javax.swing.tree.TreeNode node = null; + return 123; + } +} diff --git a/Tests/A2/Je_3_PackageClashWithType_Explicit/javax/swing/tree.java b/Tests/A2/Je_3_PackageClashWithType_Explicit/javax/swing/tree.java new file mode 100644 index 0000000000000000000000000000000000000000..d22d405395aaf86dbe3d7140fa6acd6de3ac262a --- /dev/null +++ b/Tests/A2/Je_3_PackageClashWithType_Explicit/javax/swing/tree.java @@ -0,0 +1,5 @@ +package javax.swing; + +public class tree { + public tree() {} +} diff --git a/Tests/A2/Je_3_PackageClashWithType_Explicit/javax/swing/tree/TreeNode.java b/Tests/A2/Je_3_PackageClashWithType_Explicit/javax/swing/tree/TreeNode.java new file mode 100644 index 0000000000000000000000000000000000000000..6dbb09423d9f3f67e926e13787b61077e474c5d0 --- /dev/null +++ b/Tests/A2/Je_3_PackageClashWithType_Explicit/javax/swing/tree/TreeNode.java @@ -0,0 +1,5 @@ +package javax.swing.tree; +public class TreeNode { + public TreeNode() { + } +} diff --git a/Tests/A2/Je_3_PackageClashWithType_Linked/Main.java b/Tests/A2/Je_3_PackageClashWithType_Linked/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..a319c6b1580cae3000eeaf93078e01028207b4a2 --- /dev/null +++ b/Tests/A2/Je_3_PackageClashWithType_Linked/Main.java @@ -0,0 +1,26 @@ +//TYPE_LINKING +//JOOS1:PACKAGE_CLASH_WITH_TYPE +//JOOS2:PACKAGE_CLASH_WITH_TYPE +//JAVAC:UNKNOWN + +/** + * TypeLinking: + * Check that no package names or prefixes hereof (consisting of whole + * identifiers) of declared packages, single-type-import declarations + * or used import-on-demand declarations resolve to qualified types, + * i.e. types not in the default package. + * + * The declared class javax.swing.tree clashes with the package + * of the same name because the import on-demand declaration of + * javax.swing.tree is used for resolving TreeNode. + */ +import javax.swing.tree.*; + +public class Main { + public Main() {} + + public static int test() { + TreeNode node = null; + return 123; + } +} diff --git a/Tests/A2/Je_3_PackageClashWithType_Linked/javax/swing/tree.java b/Tests/A2/Je_3_PackageClashWithType_Linked/javax/swing/tree.java new file mode 100644 index 0000000000000000000000000000000000000000..d22d405395aaf86dbe3d7140fa6acd6de3ac262a --- /dev/null +++ b/Tests/A2/Je_3_PackageClashWithType_Linked/javax/swing/tree.java @@ -0,0 +1,5 @@ +package javax.swing; + +public class tree { + public tree() {} +} diff --git a/Tests/A2/Je_3_PackageClashWithType_SingleTypeImport/Main.java b/Tests/A2/Je_3_PackageClashWithType_SingleTypeImport/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..8ebaaac025793f4e8c942e865cf3ee0641936a2f --- /dev/null +++ b/Tests/A2/Je_3_PackageClashWithType_SingleTypeImport/Main.java @@ -0,0 +1,26 @@ +//TYPE_LINKING +//JOOS1:PACKAGE_CLASH_WITH_TYPE +//JOOS2:PACKAGE_CLASH_WITH_TYPE +//JAVAC:UNKNOWN + +/** + * TypeLinking: + * Check that no package names or prefixes hereof (consisting of whole + * identifiers) of declared packages, single-type-import declarations + * or used import-on-demand declarations resolve to qualified types, + * i.e. types not in the default package. + * + * The declared class javax.swing.tree clashes with the package + * of the same name because of the single-type import declaration of + * javax.swing.tree.TreeNode. + */ + +import javax.swing.tree.TreeNode; + +public class Main { + public Main() {} + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/Je_3_PackageClashWithType_SingleTypeImport/javax/swing/tree.java b/Tests/A2/Je_3_PackageClashWithType_SingleTypeImport/javax/swing/tree.java new file mode 100644 index 0000000000000000000000000000000000000000..d22d405395aaf86dbe3d7140fa6acd6de3ac262a --- /dev/null +++ b/Tests/A2/Je_3_PackageClashWithType_SingleTypeImport/javax/swing/tree.java @@ -0,0 +1,5 @@ +package javax.swing; + +public class tree { + public tree() {} +} diff --git a/Tests/A2/Je_3_PackageExists_AlmostPrefix_External/Main.java b/Tests/A2/Je_3_PackageExists_AlmostPrefix_External/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..e7ab0a534766519c81c9b193a0ba74d0ca6750a5 --- /dev/null +++ b/Tests/A2/Je_3_PackageExists_AlmostPrefix_External/Main.java @@ -0,0 +1,15 @@ +//JOOS1:TYPE_LINKING,NON_EXISTING_PACKAGE +//JOOS2:TYPE_LINKING,NON_EXISTING_PACKAGE +//JAVAC:UNKNOWN +/** + * The package jav does not exist though it's a prefix of the package java from for instance java.lang.Object. + */ +import jav.*; + +public class Main { + public Main() {} + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/Je_3_PackageExists_AlmostPrefix_Internal/Main.java b/Tests/A2/Je_3_PackageExists_AlmostPrefix_Internal/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..25b1c321e8f3822c23a75389691a510348bbda6a --- /dev/null +++ b/Tests/A2/Je_3_PackageExists_AlmostPrefix_Internal/Main.java @@ -0,0 +1,15 @@ +//JOOS1:TYPE_LINKING,NON_EXISTING_PACKAGE +//JOOS2:TYPE_LINKING,NON_EXISTING_PACKAGE +//JAVAC:UNKNOWN +/** + * The package fo does not exist though it's a prefix of the package foo.bar from class foo.bar.Baz. + */ +import fo.*; + +public class Main { + public Main() {} + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/Je_3_PackageExists_AlmostPrefix_Internal/foo/bar/Baz.java b/Tests/A2/Je_3_PackageExists_AlmostPrefix_Internal/foo/bar/Baz.java new file mode 100644 index 0000000000000000000000000000000000000000..98299613ee0079167686a0979dc2c354c385ce9e --- /dev/null +++ b/Tests/A2/Je_3_PackageExists_AlmostPrefix_Internal/foo/bar/Baz.java @@ -0,0 +1,5 @@ +package foo.bar; + +public class Baz { + public Baz() {} +} diff --git a/Tests/A2/Je_3_PackageNameIsClassName/Main.java b/Tests/A2/Je_3_PackageNameIsClassName/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..374084486a4e1f2f3920affd235a1f4786dcd53e --- /dev/null +++ b/Tests/A2/Je_3_PackageNameIsClassName/Main.java @@ -0,0 +1,23 @@ +//TYPE_LINKING +//JOOS1:PACKAGE_CLASH_WITH_TYPE +//JOOS2:PACKAGE_CLASH_WITH_TYPE +//JAVAC:UNKNOWN + + +/** + * TypeLinking: + * Check that no package names or prefixes hereof (consisting of whole + * identifiers) of declared packages, single-type-import declarations + * or used import-on-demand declarations resolve to qualified types, + * i.e. types not in the default package. + * + * The package foo.bar of the declared class foo.bar.baz clashes with + * the type name of the declared class foo.bar. + */ +public class Main { + public Main() {} + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/Je_3_PackageNameIsClassName/foo/bar.java b/Tests/A2/Je_3_PackageNameIsClassName/foo/bar.java new file mode 100644 index 0000000000000000000000000000000000000000..1e01f62f7cd0bc71a82ae06cf24aea29521baac5 --- /dev/null +++ b/Tests/A2/Je_3_PackageNameIsClassName/foo/bar.java @@ -0,0 +1,5 @@ +package foo; + +public class bar { + public bar() {} +} diff --git a/Tests/A2/Je_3_PackageNameIsClassName/foo/bar/baz.java b/Tests/A2/Je_3_PackageNameIsClassName/foo/bar/baz.java new file mode 100644 index 0000000000000000000000000000000000000000..5bbbd083e814786905c880fd18f7968fc8654fac --- /dev/null +++ b/Tests/A2/Je_3_PackageNameIsClassName/foo/bar/baz.java @@ -0,0 +1,5 @@ +package foo.bar; + +public class baz { + public baz() {} +} diff --git a/Tests/A2/Je_3_PackageNameIsClassName_External/Main.java b/Tests/A2/Je_3_PackageNameIsClassName_External/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..98730aaea1dc1b98f18716b370ce863c80c793cf --- /dev/null +++ b/Tests/A2/Je_3_PackageNameIsClassName_External/Main.java @@ -0,0 +1,24 @@ +//TYPE_LINKING +//JOOS1:PACKAGE_CLASH_WITH_TYPE +//JOOS2:PACKAGE_CLASH_WITH_TYPE +//JAVAC:UNKNOWN + + +/** + * TypeLinking: + * Check that no package names or prefixes hereof (consisting of whole + * identifiers) of declared packages, single-type-import declarations + * or used import-on-demand declarations resolve to qualified types, + * i.e. types not in the default package. + * + * The package java.util.ArrayList of the declared + * class java.util.ArrayList.foo clashes with + * the type name of the class java.util.ArrayList found on the classpath. + */ +public class Main { + public Main() {} + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/Je_3_PackageNameIsClassName_External/java/util/ArrayList.java b/Tests/A2/Je_3_PackageNameIsClassName_External/java/util/ArrayList.java new file mode 100644 index 0000000000000000000000000000000000000000..69127b4aac590f4b4f72ca049801d146d00a89fc --- /dev/null +++ b/Tests/A2/Je_3_PackageNameIsClassName_External/java/util/ArrayList.java @@ -0,0 +1,39 @@ +package java.util; +public class ArrayList implements List { + protected int size = 0; + protected Object[] os = new Object[1]; + public ArrayList() { + } + public int size() { + return size; + } + public Object get(int index) { + return os[index]; + } + public Object set(int index, Object obj) { + Object ret = os[index]; + os[index] = obj; + return ret; + } + public boolean add(Object obj) { + if(size >= os.length) { + Object[] newos = new Object[os.length*2]; + for(int i = 0; i < size; i = i + 1) { + newos[i] = os[i]; + } + os = newos; + } + size = size + 1; + if(os[size-1] == obj) return false; + os[size-1] = obj; + return true; + } + public Object remove(int index) { + Object ret = os[index]; + size = size - 1; + for(int i = index; i < size; i = i + 1) { + os[i] = os[i+1]; + } + return ret; + } +} diff --git a/Tests/A2/Je_3_PackageNameIsClassName_External/java/util/ArrayList/foo.java b/Tests/A2/Je_3_PackageNameIsClassName_External/java/util/ArrayList/foo.java new file mode 100644 index 0000000000000000000000000000000000000000..7770d5a56fa74804c2b8441c91695213549dea1f --- /dev/null +++ b/Tests/A2/Je_3_PackageNameIsClassName_External/java/util/ArrayList/foo.java @@ -0,0 +1,5 @@ +package java.util.ArrayList; + +public class foo { + public foo() {} +} diff --git a/Tests/A2/Je_3_PackageNameIsClassName_External/java/util/Collection.java b/Tests/A2/Je_3_PackageNameIsClassName_External/java/util/Collection.java new file mode 100644 index 0000000000000000000000000000000000000000..9be463e2a558b848d566ba3b86fdfbf3cd50ea2f --- /dev/null +++ b/Tests/A2/Je_3_PackageNameIsClassName_External/java/util/Collection.java @@ -0,0 +1,4 @@ +package java.util; + +public interface Collection { +} diff --git a/Tests/A2/Je_3_PackageNameIsClassName_External/java/util/List.java b/Tests/A2/Je_3_PackageNameIsClassName_External/java/util/List.java new file mode 100644 index 0000000000000000000000000000000000000000..85fb05705a7940916c40e4771d37d87ec103dbaf --- /dev/null +++ b/Tests/A2/Je_3_PackageNameIsClassName_External/java/util/List.java @@ -0,0 +1,4 @@ +package java.util; +public interface List extends Collection { + public int size(); +} diff --git a/Tests/A2/Je_3_PackageNameIsClassName_ExternalPrefix/Main.java b/Tests/A2/Je_3_PackageNameIsClassName_ExternalPrefix/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..576d618852f9784234e244c6418dfe281edb9b96 --- /dev/null +++ b/Tests/A2/Je_3_PackageNameIsClassName_ExternalPrefix/Main.java @@ -0,0 +1,24 @@ +//TYPE_LINKING +//JOOS1:PACKAGE_CLASH_WITH_TYPE +//JOOS2:PACKAGE_CLASH_WITH_TYPE +//JAVAC:UNKNOWN + + +/** + * TypeLinking: + * Check that no package names or prefixes hereof (consisting of whole + * identifiers) of declared packages, single-type-import declarations + * or used import-on-demand declarations resolve to qualified types, + * i.e. types not in the default package. + * + * The package java.util.ArrayList of the declared + * class java.util.ArrayList.foo.bar clashes with + * the type name of the class java.util.ArrayList found on the classpath. + */ +public class Main { + public Main() {} + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/Je_3_PackageNameIsClassName_ExternalPrefix/java/util/ArrayList.java b/Tests/A2/Je_3_PackageNameIsClassName_ExternalPrefix/java/util/ArrayList.java new file mode 100644 index 0000000000000000000000000000000000000000..69127b4aac590f4b4f72ca049801d146d00a89fc --- /dev/null +++ b/Tests/A2/Je_3_PackageNameIsClassName_ExternalPrefix/java/util/ArrayList.java @@ -0,0 +1,39 @@ +package java.util; +public class ArrayList implements List { + protected int size = 0; + protected Object[] os = new Object[1]; + public ArrayList() { + } + public int size() { + return size; + } + public Object get(int index) { + return os[index]; + } + public Object set(int index, Object obj) { + Object ret = os[index]; + os[index] = obj; + return ret; + } + public boolean add(Object obj) { + if(size >= os.length) { + Object[] newos = new Object[os.length*2]; + for(int i = 0; i < size; i = i + 1) { + newos[i] = os[i]; + } + os = newos; + } + size = size + 1; + if(os[size-1] == obj) return false; + os[size-1] = obj; + return true; + } + public Object remove(int index) { + Object ret = os[index]; + size = size - 1; + for(int i = index; i < size; i = i + 1) { + os[i] = os[i+1]; + } + return ret; + } +} diff --git a/Tests/A2/Je_3_PackageNameIsClassName_ExternalPrefix/java/util/ArrayList/foo/bar.java b/Tests/A2/Je_3_PackageNameIsClassName_ExternalPrefix/java/util/ArrayList/foo/bar.java new file mode 100644 index 0000000000000000000000000000000000000000..12b2a8f3b521e7dbdb5cf2e73e28eea9182b18a1 --- /dev/null +++ b/Tests/A2/Je_3_PackageNameIsClassName_ExternalPrefix/java/util/ArrayList/foo/bar.java @@ -0,0 +1,5 @@ +package java.util.ArrayList.foo; + +public class bar { + public bar() {} +} diff --git a/Tests/A2/Je_3_PackageNameIsClassName_ExternalPrefix/java/util/Collection.java b/Tests/A2/Je_3_PackageNameIsClassName_ExternalPrefix/java/util/Collection.java new file mode 100644 index 0000000000000000000000000000000000000000..9be463e2a558b848d566ba3b86fdfbf3cd50ea2f --- /dev/null +++ b/Tests/A2/Je_3_PackageNameIsClassName_ExternalPrefix/java/util/Collection.java @@ -0,0 +1,4 @@ +package java.util; + +public interface Collection { +} diff --git a/Tests/A2/Je_3_PackageNameIsClassName_ExternalPrefix/java/util/List.java b/Tests/A2/Je_3_PackageNameIsClassName_ExternalPrefix/java/util/List.java new file mode 100644 index 0000000000000000000000000000000000000000..85fb05705a7940916c40e4771d37d87ec103dbaf --- /dev/null +++ b/Tests/A2/Je_3_PackageNameIsClassName_ExternalPrefix/java/util/List.java @@ -0,0 +1,4 @@ +package java.util; +public interface List extends Collection { + public int size(); +} diff --git a/Tests/A2/Je_3_PackageNameIsClassName_Prefix/Main.java b/Tests/A2/Je_3_PackageNameIsClassName_Prefix/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..de5573b40593b9d88d2fafb89df329ca5fdbb0a1 --- /dev/null +++ b/Tests/A2/Je_3_PackageNameIsClassName_Prefix/Main.java @@ -0,0 +1,23 @@ +//TYPE_LINKING +//JOOS1:PACKAGE_CLASH_WITH_TYPE +//JOOS2:PACKAGE_CLASH_WITH_TYPE +//JAVAC:UNKNOWN + + +/** + * TypeLinking: + * Check that no package names or prefixes hereof (consisting of whole + * identifiers) of declared packages, single-type-import declarations + * or used import-on-demand declarations resolve to qualified types, + * i.e. types not in the default package. + * + * The package foo.bar of the declared class foo.bar.baz.boz clashes with + * the type name of the declared class foo.bar. + */ +public class Main { + public Main() {} + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/Je_3_PackageNameIsClassName_Prefix/foo/bar.java b/Tests/A2/Je_3_PackageNameIsClassName_Prefix/foo/bar.java new file mode 100644 index 0000000000000000000000000000000000000000..1e01f62f7cd0bc71a82ae06cf24aea29521baac5 --- /dev/null +++ b/Tests/A2/Je_3_PackageNameIsClassName_Prefix/foo/bar.java @@ -0,0 +1,5 @@ +package foo; + +public class bar { + public bar() {} +} diff --git a/Tests/A2/Je_3_PackageNameIsClassName_Prefix/foo/bar/baz/boz.java b/Tests/A2/Je_3_PackageNameIsClassName_Prefix/foo/bar/baz/boz.java new file mode 100644 index 0000000000000000000000000000000000000000..e70fd0236b80c104538f1489e9dc7c03198cc69a --- /dev/null +++ b/Tests/A2/Je_3_PackageNameIsClassName_Prefix/foo/bar/baz/boz.java @@ -0,0 +1,5 @@ +package foo.bar.baz; + +public class boz { + public boz() {} +} diff --git a/Tests/A2/Je_3_Resolve_ImplicitJavaIO/Main.java b/Tests/A2/Je_3_Resolve_ImplicitJavaIO/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..29d9577769d929d22ea3036c569f83f210e1d92c --- /dev/null +++ b/Tests/A2/Je_3_Resolve_ImplicitJavaIO/Main.java @@ -0,0 +1,12 @@ +//TYPE_LINKING +//JOOS1:UNRESOLVED_TYPE +//JOOS2:UNRESOLVED_TYPE +//JAVAC:UNKNOWN + +public class Main implements Serializable { + public Main() {} + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/Je_3_Resolve_ImportDifferentFromSamePackage/Main.java b/Tests/A2/Je_3_Resolve_ImportDifferentFromSamePackage/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..2a62ca28f42e53b98c724325a04c8dc92f26f6da --- /dev/null +++ b/Tests/A2/Je_3_Resolve_ImportDifferentFromSamePackage/Main.java @@ -0,0 +1,20 @@ +// JOOS1:TYPE_LINKING,UNRESOLVED_TYPE +// JOOS2:TYPE_LINKING,UNRESOLVED_TYPE +// JAVAC:UNKNOWN +// +/** + * Typelinking: + * -Check that all types actually resolve to defined types in the + * program or the class library. + */ +import java.util.ArrayList; + +public class Main { + + public Main() { } + + public static int test() { + List l = null; + return 123; + } +} diff --git a/Tests/A2/Je_3_Resolve_ImportDifferentFromSamePackage/java/util/ArrayList.java b/Tests/A2/Je_3_Resolve_ImportDifferentFromSamePackage/java/util/ArrayList.java new file mode 100644 index 0000000000000000000000000000000000000000..69127b4aac590f4b4f72ca049801d146d00a89fc --- /dev/null +++ b/Tests/A2/Je_3_Resolve_ImportDifferentFromSamePackage/java/util/ArrayList.java @@ -0,0 +1,39 @@ +package java.util; +public class ArrayList implements List { + protected int size = 0; + protected Object[] os = new Object[1]; + public ArrayList() { + } + public int size() { + return size; + } + public Object get(int index) { + return os[index]; + } + public Object set(int index, Object obj) { + Object ret = os[index]; + os[index] = obj; + return ret; + } + public boolean add(Object obj) { + if(size >= os.length) { + Object[] newos = new Object[os.length*2]; + for(int i = 0; i < size; i = i + 1) { + newos[i] = os[i]; + } + os = newos; + } + size = size + 1; + if(os[size-1] == obj) return false; + os[size-1] = obj; + return true; + } + public Object remove(int index) { + Object ret = os[index]; + size = size - 1; + for(int i = index; i < size; i = i + 1) { + os[i] = os[i+1]; + } + return ret; + } +} diff --git a/Tests/A2/Je_3_Resolve_ImportDifferentFromSamePackage/java/util/Collection.java b/Tests/A2/Je_3_Resolve_ImportDifferentFromSamePackage/java/util/Collection.java new file mode 100644 index 0000000000000000000000000000000000000000..9be463e2a558b848d566ba3b86fdfbf3cd50ea2f --- /dev/null +++ b/Tests/A2/Je_3_Resolve_ImportDifferentFromSamePackage/java/util/Collection.java @@ -0,0 +1,4 @@ +package java.util; + +public interface Collection { +} diff --git a/Tests/A2/Je_3_Resolve_ImportDifferentFromSamePackage/java/util/List.java b/Tests/A2/Je_3_Resolve_ImportDifferentFromSamePackage/java/util/List.java new file mode 100644 index 0000000000000000000000000000000000000000..85fb05705a7940916c40e4771d37d87ec103dbaf --- /dev/null +++ b/Tests/A2/Je_3_Resolve_ImportDifferentFromSamePackage/java/util/List.java @@ -0,0 +1,4 @@ +package java.util; +public interface List extends Collection { + public int size(); +} diff --git a/Tests/A2/Je_3_Resolve_LinkToCorrectPackage/Foo.java b/Tests/A2/Je_3_Resolve_LinkToCorrectPackage/Foo.java new file mode 100644 index 0000000000000000000000000000000000000000..2515ef46cc4ee54d2d30106402251f83bbfccbd1 --- /dev/null +++ b/Tests/A2/Je_3_Resolve_LinkToCorrectPackage/Foo.java @@ -0,0 +1,8 @@ +package Test; + +public class Foo extends Zoo{ + + public Foo(){} + + +} diff --git a/Tests/A2/Je_3_Resolve_LinkToCorrectPackage/Main.java b/Tests/A2/Je_3_Resolve_LinkToCorrectPackage/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..7ed3136b8b24be854f724c4be099e6940ae691a6 --- /dev/null +++ b/Tests/A2/Je_3_Resolve_LinkToCorrectPackage/Main.java @@ -0,0 +1,24 @@ +// JOOS1:TYPE_LINKING,DISAMBIGUATION,VARIABLE_OR_TYPE_NOT_FOUND +// JOOS2:TYPE_LINKING,DISAMBIGUATION,VARIABLE_OR_TYPE_NOT_FOUND +// JAVAC:UNKNOWN +// +/** + * TypeLinking + * - Tests whether a simple typename is linked to the correct type in + * the same package, in the case where other packages are also defined + * within the program. + * Specifically, the type name Zoo in Test.Foo should not link to Test2.Zoo + */ +public class Main{ + + public Main(){} + + public static int test(){ + return Test.Foo.test(); + } + + public static void main(String[] args){ + System.out.println(Main.test()); + } + +} diff --git a/Tests/A2/Je_3_Resolve_LinkToCorrectPackage/Zoo.java b/Tests/A2/Je_3_Resolve_LinkToCorrectPackage/Zoo.java new file mode 100644 index 0000000000000000000000000000000000000000..2ee61c7dde285923888691e70c11c681901ddf84 --- /dev/null +++ b/Tests/A2/Je_3_Resolve_LinkToCorrectPackage/Zoo.java @@ -0,0 +1,11 @@ +package Test2; + +public class Zoo{ + + public Zoo(){} + + public static int test(){ + return 123; + } + +} diff --git a/Tests/A2/Je_3_Resolve_MissingImport/Main.java b/Tests/A2/Je_3_Resolve_MissingImport/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..d73b89b5ca6940a9dea58229e35a9560458997fd --- /dev/null +++ b/Tests/A2/Je_3_Resolve_MissingImport/Main.java @@ -0,0 +1,18 @@ +// JOOS1:TYPE_LINKING,UNRESOLVED_TYPE +// JOOS2:TYPE_LINKING,UNRESOLVED_TYPE +// JAVAC:UNKNOWN +// +/** + * Typelinking: + * -Check that all types actually resolve to defined types in the + * program or the class library. + */ +public class Main { + + public Main() { } + + public static int test() { + List l = null; + return 123; + } +} diff --git a/Tests/A2/Je_3_Resolve_MissingImport/java/util/ArrayList.java b/Tests/A2/Je_3_Resolve_MissingImport/java/util/ArrayList.java new file mode 100644 index 0000000000000000000000000000000000000000..69127b4aac590f4b4f72ca049801d146d00a89fc --- /dev/null +++ b/Tests/A2/Je_3_Resolve_MissingImport/java/util/ArrayList.java @@ -0,0 +1,39 @@ +package java.util; +public class ArrayList implements List { + protected int size = 0; + protected Object[] os = new Object[1]; + public ArrayList() { + } + public int size() { + return size; + } + public Object get(int index) { + return os[index]; + } + public Object set(int index, Object obj) { + Object ret = os[index]; + os[index] = obj; + return ret; + } + public boolean add(Object obj) { + if(size >= os.length) { + Object[] newos = new Object[os.length*2]; + for(int i = 0; i < size; i = i + 1) { + newos[i] = os[i]; + } + os = newos; + } + size = size + 1; + if(os[size-1] == obj) return false; + os[size-1] = obj; + return true; + } + public Object remove(int index) { + Object ret = os[index]; + size = size - 1; + for(int i = index; i < size; i = i + 1) { + os[i] = os[i+1]; + } + return ret; + } +} diff --git a/Tests/A2/Je_3_Resolve_MissingImport/java/util/Collection.java b/Tests/A2/Je_3_Resolve_MissingImport/java/util/Collection.java new file mode 100644 index 0000000000000000000000000000000000000000..9be463e2a558b848d566ba3b86fdfbf3cd50ea2f --- /dev/null +++ b/Tests/A2/Je_3_Resolve_MissingImport/java/util/Collection.java @@ -0,0 +1,4 @@ +package java.util; + +public interface Collection { +} diff --git a/Tests/A2/Je_3_Resolve_MissingImport/java/util/List.java b/Tests/A2/Je_3_Resolve_MissingImport/java/util/List.java new file mode 100644 index 0000000000000000000000000000000000000000..85fb05705a7940916c40e4771d37d87ec103dbaf --- /dev/null +++ b/Tests/A2/Je_3_Resolve_MissingImport/java/util/List.java @@ -0,0 +1,4 @@ +package java.util; +public interface List extends Collection { + public int size(); +} diff --git a/Tests/A2/Je_3_Resolve_NonExistingSuperclass.java b/Tests/A2/Je_3_Resolve_NonExistingSuperclass.java new file mode 100644 index 0000000000000000000000000000000000000000..42584adab7953e2cec96b880a850e08f0fed2fe5 --- /dev/null +++ b/Tests/A2/Je_3_Resolve_NonExistingSuperclass.java @@ -0,0 +1,18 @@ +// JOOS1:TYPE_LINKING,UNRESOLVED_TYPE +// JOOS2:TYPE_LINKING,UNRESOLVED_TYPE +// JAVAC:UNKNOWN +// +/** + * Typelinking: + * - Check that all types actually resolve to defined types in the + * program or the class library. + */ +public class Je_3_Resolve_NonExistingSuperclass extends foo { + + public Je_3_Resolve_NonExistingSuperclass () {} + + public static int test() { + return 123; + } + +} diff --git a/Tests/A2/Je_3_Resolve_SamePackageAndClassName.java b/Tests/A2/Je_3_Resolve_SamePackageAndClassName.java new file mode 100644 index 0000000000000000000000000000000000000000..49c00426dcefbc27bf74565a5b6818c391366808 --- /dev/null +++ b/Tests/A2/Je_3_Resolve_SamePackageAndClassName.java @@ -0,0 +1,20 @@ +// JOOS1:TYPE_LINKING,PREFIX_RESOLVES_TO_TYPE +// JOOS2:TYPE_LINKING,PREFIX_RESOLVES_TO_TYPE +// JAVAC:UNKNOWN +// +/** + * Typelinking: + * - Check that no prefixes (consisting of whole identifiers) of fully + * qualified types themselves resolve to types. + */ +package Je_3_Resolve_SamePackageAndClassName; + +public class Je_3_Resolve_SamePackageAndClassName { + + public Je_3_Resolve_SamePackageAndClassName() {} + + public void test() { + new Je_3_Resolve_SamePackageAndClassName.Je_3_Resolve_SamePackageAndClassName().test(); + } + +} diff --git a/Tests/A2/Je_3_SingleTypeImport_ClashWithClass/List.java b/Tests/A2/Je_3_SingleTypeImport_ClashWithClass/List.java new file mode 100644 index 0000000000000000000000000000000000000000..2676488758b379533d276a5060362a41c366b7b4 --- /dev/null +++ b/Tests/A2/Je_3_SingleTypeImport_ClashWithClass/List.java @@ -0,0 +1,7 @@ +import java.util.List; + +public class List { + + public List() {} + +} diff --git a/Tests/A2/Je_3_SingleTypeImport_ClashWithClass/Main.java b/Tests/A2/Je_3_SingleTypeImport_ClashWithClass/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..963649d86f4b69ab8362fe4b107d66d7532bb915 --- /dev/null +++ b/Tests/A2/Je_3_SingleTypeImport_ClashWithClass/Main.java @@ -0,0 +1,17 @@ +// JOOS1:TYPE_LINKING,SINGLE_TYPE_IMPORT_CLASH_WITH_CLASS +// JOOS2:TYPE_LINKING,SINGLE_TYPE_IMPORT_CLASH_WITH_CLASS +// JAVAC:UNKNOWN +// +/** + * Typelinking: + * - Check that no single-type-import declarations clash with the + * class (Joos 2: or interface) defined in the same file. (see List.java) + */ +public class Main { + + public Main() {} + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/Je_3_SingleTypeImport_ClashWithClass/java/util/ArrayList.java b/Tests/A2/Je_3_SingleTypeImport_ClashWithClass/java/util/ArrayList.java new file mode 100644 index 0000000000000000000000000000000000000000..69127b4aac590f4b4f72ca049801d146d00a89fc --- /dev/null +++ b/Tests/A2/Je_3_SingleTypeImport_ClashWithClass/java/util/ArrayList.java @@ -0,0 +1,39 @@ +package java.util; +public class ArrayList implements List { + protected int size = 0; + protected Object[] os = new Object[1]; + public ArrayList() { + } + public int size() { + return size; + } + public Object get(int index) { + return os[index]; + } + public Object set(int index, Object obj) { + Object ret = os[index]; + os[index] = obj; + return ret; + } + public boolean add(Object obj) { + if(size >= os.length) { + Object[] newos = new Object[os.length*2]; + for(int i = 0; i < size; i = i + 1) { + newos[i] = os[i]; + } + os = newos; + } + size = size + 1; + if(os[size-1] == obj) return false; + os[size-1] = obj; + return true; + } + public Object remove(int index) { + Object ret = os[index]; + size = size - 1; + for(int i = index; i < size; i = i + 1) { + os[i] = os[i+1]; + } + return ret; + } +} diff --git a/Tests/A2/Je_3_SingleTypeImport_ClashWithClass/java/util/Collection.java b/Tests/A2/Je_3_SingleTypeImport_ClashWithClass/java/util/Collection.java new file mode 100644 index 0000000000000000000000000000000000000000..9be463e2a558b848d566ba3b86fdfbf3cd50ea2f --- /dev/null +++ b/Tests/A2/Je_3_SingleTypeImport_ClashWithClass/java/util/Collection.java @@ -0,0 +1,4 @@ +package java.util; + +public interface Collection { +} diff --git a/Tests/A2/Je_3_SingleTypeImport_ClashWithClass/java/util/List.java b/Tests/A2/Je_3_SingleTypeImport_ClashWithClass/java/util/List.java new file mode 100644 index 0000000000000000000000000000000000000000..85fb05705a7940916c40e4771d37d87ec103dbaf --- /dev/null +++ b/Tests/A2/Je_3_SingleTypeImport_ClashWithClass/java/util/List.java @@ -0,0 +1,4 @@ +package java.util; +public interface List extends Collection { + public int size(); +} diff --git a/Tests/A2/Je_3_SingleTypeImport_ClashWithClass_InPackage/Main.java b/Tests/A2/Je_3_SingleTypeImport_ClashWithClass_InPackage/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..4a382da25227cc0c1a00d7746740d0ea324e737a --- /dev/null +++ b/Tests/A2/Je_3_SingleTypeImport_ClashWithClass_InPackage/Main.java @@ -0,0 +1,17 @@ +// JOOS1:TYPE_LINKING,SINGLE_TYPE_IMPORT_CLASH_WITH_CLASS +// JOOS2:TYPE_LINKING,SINGLE_TYPE_IMPORT_CLASH_WITH_CLASS +// JAVAC:UNKNOWN +// +/** + * Typelinking: + * - Check that no single-type-import declarations clash with the + * class (Joos 2: or interface) defined in the same file. (see foo/List.java) + */ +public class Main { + + public Main() {} + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/Je_3_SingleTypeImport_ClashWithClass_InPackage/foo/List.java b/Tests/A2/Je_3_SingleTypeImport_ClashWithClass_InPackage/foo/List.java new file mode 100644 index 0000000000000000000000000000000000000000..c9a77c2f14645e9f68370c4a5842e580da03817b --- /dev/null +++ b/Tests/A2/Je_3_SingleTypeImport_ClashWithClass_InPackage/foo/List.java @@ -0,0 +1,9 @@ +package foo; + +import java.util.List; + +public class List { + + public List() {} + +} diff --git a/Tests/A2/Je_3_SingleTypeImport_ClashWithClass_InPackage/java/util/ArrayList.java b/Tests/A2/Je_3_SingleTypeImport_ClashWithClass_InPackage/java/util/ArrayList.java new file mode 100644 index 0000000000000000000000000000000000000000..69127b4aac590f4b4f72ca049801d146d00a89fc --- /dev/null +++ b/Tests/A2/Je_3_SingleTypeImport_ClashWithClass_InPackage/java/util/ArrayList.java @@ -0,0 +1,39 @@ +package java.util; +public class ArrayList implements List { + protected int size = 0; + protected Object[] os = new Object[1]; + public ArrayList() { + } + public int size() { + return size; + } + public Object get(int index) { + return os[index]; + } + public Object set(int index, Object obj) { + Object ret = os[index]; + os[index] = obj; + return ret; + } + public boolean add(Object obj) { + if(size >= os.length) { + Object[] newos = new Object[os.length*2]; + for(int i = 0; i < size; i = i + 1) { + newos[i] = os[i]; + } + os = newos; + } + size = size + 1; + if(os[size-1] == obj) return false; + os[size-1] = obj; + return true; + } + public Object remove(int index) { + Object ret = os[index]; + size = size - 1; + for(int i = index; i < size; i = i + 1) { + os[i] = os[i+1]; + } + return ret; + } +} diff --git a/Tests/A2/Je_3_SingleTypeImport_ClashWithClass_InPackage/java/util/Collection.java b/Tests/A2/Je_3_SingleTypeImport_ClashWithClass_InPackage/java/util/Collection.java new file mode 100644 index 0000000000000000000000000000000000000000..9be463e2a558b848d566ba3b86fdfbf3cd50ea2f --- /dev/null +++ b/Tests/A2/Je_3_SingleTypeImport_ClashWithClass_InPackage/java/util/Collection.java @@ -0,0 +1,4 @@ +package java.util; + +public interface Collection { +} diff --git a/Tests/A2/Je_3_SingleTypeImport_ClashWithClass_InPackage/java/util/List.java b/Tests/A2/Je_3_SingleTypeImport_ClashWithClass_InPackage/java/util/List.java new file mode 100644 index 0000000000000000000000000000000000000000..85fb05705a7940916c40e4771d37d87ec103dbaf --- /dev/null +++ b/Tests/A2/Je_3_SingleTypeImport_ClashWithClass_InPackage/java/util/List.java @@ -0,0 +1,4 @@ +package java.util; +public interface List extends Collection { + public int size(); +} diff --git a/Tests/A2/Je_3_SingleTypeImport_ClashWithEachOther/Main.java b/Tests/A2/Je_3_SingleTypeImport_ClashWithEachOther/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..65870497ce667f42fbbc78836004d68c9f8a8e17 --- /dev/null +++ b/Tests/A2/Je_3_SingleTypeImport_ClashWithEachOther/Main.java @@ -0,0 +1,21 @@ +// JOOS1:TYPE_LINKING,TWO_SINGLE_TYPE_IMPORTS_CLASH +// JOOS2:TYPE_LINKING,TWO_SINGLE_TYPE_IMPORTS_CLASH +// JAVAC:UNKNOWN +// +/** + * Typelinking: + * - Check that no two single-type-import declarations clash with each + * other. + */ +import java.util.List; +import java.awt.List; + +public class Main { + + public Main () {} + + public static int test() { + return 123; + } + +} diff --git a/Tests/A2/Je_3_SingleTypeImport_ClashWithEachOther/java/awt/List.java b/Tests/A2/Je_3_SingleTypeImport_ClashWithEachOther/java/awt/List.java new file mode 100644 index 0000000000000000000000000000000000000000..7e253f6d15713cd32c9679d1d1e016d03a941c0d --- /dev/null +++ b/Tests/A2/Je_3_SingleTypeImport_ClashWithEachOther/java/awt/List.java @@ -0,0 +1,5 @@ +package java.awt; +public class List { + public List() { + } +} diff --git a/Tests/A2/Je_3_SingleTypeImport_ClashWithEachOther/java/util/ArrayList.java b/Tests/A2/Je_3_SingleTypeImport_ClashWithEachOther/java/util/ArrayList.java new file mode 100644 index 0000000000000000000000000000000000000000..69127b4aac590f4b4f72ca049801d146d00a89fc --- /dev/null +++ b/Tests/A2/Je_3_SingleTypeImport_ClashWithEachOther/java/util/ArrayList.java @@ -0,0 +1,39 @@ +package java.util; +public class ArrayList implements List { + protected int size = 0; + protected Object[] os = new Object[1]; + public ArrayList() { + } + public int size() { + return size; + } + public Object get(int index) { + return os[index]; + } + public Object set(int index, Object obj) { + Object ret = os[index]; + os[index] = obj; + return ret; + } + public boolean add(Object obj) { + if(size >= os.length) { + Object[] newos = new Object[os.length*2]; + for(int i = 0; i < size; i = i + 1) { + newos[i] = os[i]; + } + os = newos; + } + size = size + 1; + if(os[size-1] == obj) return false; + os[size-1] = obj; + return true; + } + public Object remove(int index) { + Object ret = os[index]; + size = size - 1; + for(int i = index; i < size; i = i + 1) { + os[i] = os[i+1]; + } + return ret; + } +} diff --git a/Tests/A2/Je_3_SingleTypeImport_ClashWithEachOther/java/util/Collection.java b/Tests/A2/Je_3_SingleTypeImport_ClashWithEachOther/java/util/Collection.java new file mode 100644 index 0000000000000000000000000000000000000000..9be463e2a558b848d566ba3b86fdfbf3cd50ea2f --- /dev/null +++ b/Tests/A2/Je_3_SingleTypeImport_ClashWithEachOther/java/util/Collection.java @@ -0,0 +1,4 @@ +package java.util; + +public interface Collection { +} diff --git a/Tests/A2/Je_3_SingleTypeImport_ClashWithEachOther/java/util/List.java b/Tests/A2/Je_3_SingleTypeImport_ClashWithEachOther/java/util/List.java new file mode 100644 index 0000000000000000000000000000000000000000..85fb05705a7940916c40e4771d37d87ec103dbaf --- /dev/null +++ b/Tests/A2/Je_3_SingleTypeImport_ClashWithEachOther/java/util/List.java @@ -0,0 +1,4 @@ +package java.util; +public interface List extends Collection { + public int size(); +} diff --git a/Tests/A2/Je_3_SingleTypeImport_ClashWithEachOther_MultipleImports/Main.java b/Tests/A2/Je_3_SingleTypeImport_ClashWithEachOther_MultipleImports/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..ac7c1091b8283a98bef76e94ff2554119a324184 --- /dev/null +++ b/Tests/A2/Je_3_SingleTypeImport_ClashWithEachOther_MultipleImports/Main.java @@ -0,0 +1,23 @@ +// JOOS1:TYPE_LINKING,TWO_SINGLE_TYPE_IMPORTS_CLASH +// JOOS2:TYPE_LINKING,TWO_SINGLE_TYPE_IMPORTS_CLASH +// JAVAC:UNKNOWN +// +/** + * Typelinking: + * - Check that no two single-type-import declarations clash with each + * other. + */ +import java.io.File; +import java.util.List; +import java.lang.Object; +import java.awt.List; + +public class Main { + + public Main() {} + + public static int test() { + return 123; + } + +} diff --git a/Tests/A2/Je_3_SingleTypeImport_ClashWithEachOther_MultipleImports/java/awt/List.java b/Tests/A2/Je_3_SingleTypeImport_ClashWithEachOther_MultipleImports/java/awt/List.java new file mode 100644 index 0000000000000000000000000000000000000000..7e253f6d15713cd32c9679d1d1e016d03a941c0d --- /dev/null +++ b/Tests/A2/Je_3_SingleTypeImport_ClashWithEachOther_MultipleImports/java/awt/List.java @@ -0,0 +1,5 @@ +package java.awt; +public class List { + public List() { + } +} diff --git a/Tests/A2/Je_3_SingleTypeImport_ClashWithEachOther_MultipleImports/java/io/File.java b/Tests/A2/Je_3_SingleTypeImport_ClashWithEachOther_MultipleImports/java/io/File.java new file mode 100644 index 0000000000000000000000000000000000000000..2896897f9669271624feef8be1f3f45257bce096 --- /dev/null +++ b/Tests/A2/Je_3_SingleTypeImport_ClashWithEachOther_MultipleImports/java/io/File.java @@ -0,0 +1,5 @@ +package java.io; +public class File { + public File() { + } +} diff --git a/Tests/A2/Je_3_SingleTypeImport_ClashWithEachOther_MultipleImports/java/util/Collection.java b/Tests/A2/Je_3_SingleTypeImport_ClashWithEachOther_MultipleImports/java/util/Collection.java new file mode 100644 index 0000000000000000000000000000000000000000..9be463e2a558b848d566ba3b86fdfbf3cd50ea2f --- /dev/null +++ b/Tests/A2/Je_3_SingleTypeImport_ClashWithEachOther_MultipleImports/java/util/Collection.java @@ -0,0 +1,4 @@ +package java.util; + +public interface Collection { +} diff --git a/Tests/A2/Je_3_SingleTypeImport_ClashWithEachOther_MultipleImports/java/util/List.java b/Tests/A2/Je_3_SingleTypeImport_ClashWithEachOther_MultipleImports/java/util/List.java new file mode 100644 index 0000000000000000000000000000000000000000..85fb05705a7940916c40e4771d37d87ec103dbaf --- /dev/null +++ b/Tests/A2/Je_3_SingleTypeImport_ClashWithEachOther_MultipleImports/java/util/List.java @@ -0,0 +1,4 @@ +package java.util; +public interface List extends Collection { + public int size(); +} diff --git a/Tests/A2/Je_3_SingleTypeImport_ClashWithInterface/List.java b/Tests/A2/Je_3_SingleTypeImport_ClashWithInterface/List.java new file mode 100644 index 0000000000000000000000000000000000000000..719970e5bb00bbc68904b261d3995e03f0fcc371 --- /dev/null +++ b/Tests/A2/Je_3_SingleTypeImport_ClashWithInterface/List.java @@ -0,0 +1,4 @@ +import java.util.List; + +public interface List { +} diff --git a/Tests/A2/Je_3_SingleTypeImport_ClashWithInterface/Main.java b/Tests/A2/Je_3_SingleTypeImport_ClashWithInterface/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..1e933351f24096371b49658d9441f8ce1abd5ed9 --- /dev/null +++ b/Tests/A2/Je_3_SingleTypeImport_ClashWithInterface/Main.java @@ -0,0 +1,17 @@ +// JOOS1:PARSER_WEEDER,JOOS1_INTERFACE,PARSER_EXCEPTION +// JOOS2:TYPE_LINKING,SINGLE_TYPE_IMPORT_CLASH_WITH_CLASS +// JAVAC:UNKNOWN +// +/** + * Typelinking: + * - Check that no single-type-import declarations clash with the + * class (Joos 2: or interface) defined in the same file. (see List.java) + */ +public class Main { + + public Main() {} + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/Je_3_SingleTypeImport_ClashWithInterface/java/util/ArrayList.java b/Tests/A2/Je_3_SingleTypeImport_ClashWithInterface/java/util/ArrayList.java new file mode 100644 index 0000000000000000000000000000000000000000..69127b4aac590f4b4f72ca049801d146d00a89fc --- /dev/null +++ b/Tests/A2/Je_3_SingleTypeImport_ClashWithInterface/java/util/ArrayList.java @@ -0,0 +1,39 @@ +package java.util; +public class ArrayList implements List { + protected int size = 0; + protected Object[] os = new Object[1]; + public ArrayList() { + } + public int size() { + return size; + } + public Object get(int index) { + return os[index]; + } + public Object set(int index, Object obj) { + Object ret = os[index]; + os[index] = obj; + return ret; + } + public boolean add(Object obj) { + if(size >= os.length) { + Object[] newos = new Object[os.length*2]; + for(int i = 0; i < size; i = i + 1) { + newos[i] = os[i]; + } + os = newos; + } + size = size + 1; + if(os[size-1] == obj) return false; + os[size-1] = obj; + return true; + } + public Object remove(int index) { + Object ret = os[index]; + size = size - 1; + for(int i = index; i < size; i = i + 1) { + os[i] = os[i+1]; + } + return ret; + } +} diff --git a/Tests/A2/Je_3_SingleTypeImport_ClashWithInterface/java/util/Collection.java b/Tests/A2/Je_3_SingleTypeImport_ClashWithInterface/java/util/Collection.java new file mode 100644 index 0000000000000000000000000000000000000000..9be463e2a558b848d566ba3b86fdfbf3cd50ea2f --- /dev/null +++ b/Tests/A2/Je_3_SingleTypeImport_ClashWithInterface/java/util/Collection.java @@ -0,0 +1,4 @@ +package java.util; + +public interface Collection { +} diff --git a/Tests/A2/Je_3_SingleTypeImport_ClashWithInterface/java/util/List.java b/Tests/A2/Je_3_SingleTypeImport_ClashWithInterface/java/util/List.java new file mode 100644 index 0000000000000000000000000000000000000000..85fb05705a7940916c40e4771d37d87ec103dbaf --- /dev/null +++ b/Tests/A2/Je_3_SingleTypeImport_ClashWithInterface/java/util/List.java @@ -0,0 +1,4 @@ +package java.util; +public interface List extends Collection { + public int size(); +} diff --git a/Tests/A2/Je_3_SingleTypeImport_NonExistingPackage/Main.java b/Tests/A2/Je_3_SingleTypeImport_NonExistingPackage/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..ecb71da124fb304e9bc99a901df951cdc87df3a8 --- /dev/null +++ b/Tests/A2/Je_3_SingleTypeImport_NonExistingPackage/Main.java @@ -0,0 +1,20 @@ +// JOOS1:TYPE_LINKING,NON_EXISTING_PACKAGE,UNRESOLVED_TYPE +// JOOS2:TYPE_LINKING,NON_EXISTING_PACKAGE,UNRESOLVED_TYPE +// JAVAC:UNKNOWN +// +/** + * Type linking: + * - Check that all types actually resolve to defined types in the + * program or the class library. + */ +import java.Util.Collection; + +public class Main { + + public Main () {} + + public static int test() { + return 123; + } + +} diff --git a/Tests/A2/Je_3_SingleTypeImport_NonExistingPackage/java/util/Collection.java b/Tests/A2/Je_3_SingleTypeImport_NonExistingPackage/java/util/Collection.java new file mode 100644 index 0000000000000000000000000000000000000000..9be463e2a558b848d566ba3b86fdfbf3cd50ea2f --- /dev/null +++ b/Tests/A2/Je_3_SingleTypeImport_NonExistingPackage/java/util/Collection.java @@ -0,0 +1,4 @@ +package java.util; + +public interface Collection { +} diff --git a/Tests/A2/Je_3_SingleTypeImport_NonExistingType/Main.java b/Tests/A2/Je_3_SingleTypeImport_NonExistingType/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..315c8643eda858003be45cd8e64bc19ab17275e4 --- /dev/null +++ b/Tests/A2/Je_3_SingleTypeImport_NonExistingType/Main.java @@ -0,0 +1,20 @@ +// JOOS1:TYPE_LINKING,UNRESOLVED_TYPE +// JOOS2:TYPE_LINKING,UNRESOLVED_TYPE +// JAVAC:UNKNOWN +// +/** + * Type linking: + * - Check that all types actually resolve to defined types in the + * program or the class library. + */ +import java.util.collection; + +public class Main { + + public Main () {} + + public static int test() { + return 123; + } + +} diff --git a/Tests/A2/Je_3_SingleTypeImport_NonExistingType/java/util/Collection.java b/Tests/A2/Je_3_SingleTypeImport_NonExistingType/java/util/Collection.java new file mode 100644 index 0000000000000000000000000000000000000000..9be463e2a558b848d566ba3b86fdfbf3cd50ea2f --- /dev/null +++ b/Tests/A2/Je_3_SingleTypeImport_NonExistingType/java/util/Collection.java @@ -0,0 +1,4 @@ +package java.util; + +public interface Collection { +} diff --git a/Tests/A2/Je_3_UndefinedType_DefaultPackageNotVisible/A.java b/Tests/A2/Je_3_UndefinedType_DefaultPackageNotVisible/A.java new file mode 100644 index 0000000000000000000000000000000000000000..dded1873e900073fc50988bf66856ae1578a584c --- /dev/null +++ b/Tests/A2/Je_3_UndefinedType_DefaultPackageNotVisible/A.java @@ -0,0 +1,4 @@ +package foo; +public class A extends Main { + public A () {} +} diff --git a/Tests/A2/Je_3_UndefinedType_DefaultPackageNotVisible/Main.java b/Tests/A2/Je_3_UndefinedType_DefaultPackageNotVisible/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..7223eaefba629b5af22c88e7f185ffb40f82cdb4 --- /dev/null +++ b/Tests/A2/Je_3_UndefinedType_DefaultPackageNotVisible/Main.java @@ -0,0 +1,18 @@ +// JOOS1:TYPE_LINKING,UNRESOLVED_TYPE +// JOOS2:TYPE_LINKING,UNRESOLVED_TYPE +// JAVAC:UNKNOWN +// +/** + * Typelinking: + * - Check that all types actually resolve to defined types in the + * program or the class library. (see A.java) + */ +public class Main { + + public Main () {} + + public static int test() { + return 123; + } + +} diff --git a/Tests/A2/Je_4_AbstractMethod_AbstractObjectMethods/A.java b/Tests/A2/Je_4_AbstractMethod_AbstractObjectMethods/A.java new file mode 100644 index 0000000000000000000000000000000000000000..c5fbf0aac74e5da93715c56b55c96ba6c2b54a53 --- /dev/null +++ b/Tests/A2/Je_4_AbstractMethod_AbstractObjectMethods/A.java @@ -0,0 +1,6 @@ +public abstract class A{ + + public A(){} + + public abstract String toString(); +} diff --git a/Tests/A2/Je_4_AbstractMethod_AbstractObjectMethods/Main.java b/Tests/A2/Je_4_AbstractMethod_AbstractObjectMethods/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..4c4470f5d56075172a80f59d119cf74fff23bc79 --- /dev/null +++ b/Tests/A2/Je_4_AbstractMethod_AbstractObjectMethods/Main.java @@ -0,0 +1,17 @@ +// JOOS1:HIERARCHY,CLASS_MUST_BE_ABSTRACT +// JOOS2:HIERARCHY,CLASS_MUST_BE_ABSTRACT +// JAVAC:UNKNOWN +// +/** + * Hierarchy: + * - A class that has (declares or inherits) any abstract methods must + * be abstract (8.1.1.1, well-formedness constraint 4). + **/ +public class Main extends A implements Cloneable{ + + public Main(){} + + public static int test(){ + return 123; + } +} diff --git a/Tests/A2/Je_4_AbstractMethod_Declared.java b/Tests/A2/Je_4_AbstractMethod_Declared.java new file mode 100644 index 0000000000000000000000000000000000000000..8021c5ad9d17d8ddce4dd1894b1372d54bfbb354 --- /dev/null +++ b/Tests/A2/Je_4_AbstractMethod_Declared.java @@ -0,0 +1,19 @@ +// JOOS1:HIERARCHY,CLASS_MUST_BE_ABSTRACT +// JOOS2:HIERARCHY,CLASS_MUST_BE_ABSTRACT +// JAVAC:UNKNOWN +// +/** + * Hierarchy check: + * - A class that has (declares or inherits) any abstract methods must + * be abstract (8.1.1.1, well-formedness constraint 4). + */ +public class Je_4_AbstractMethod_Declared { + + public Je_4_AbstractMethod_Declared() {} + + public abstract int foo(); + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/Je_4_AbstractMethod_InheritFromInterface_1/Main.java b/Tests/A2/Je_4_AbstractMethod_InheritFromInterface_1/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..5b361759b3a4b6f44e95806058b5dba731bb93b8 --- /dev/null +++ b/Tests/A2/Je_4_AbstractMethod_InheritFromInterface_1/Main.java @@ -0,0 +1,19 @@ +// JOOS1:HIERARCHY,CLASS_MUST_BE_ABSTRACT +// JOOS2:HIERARCHY,CLASS_MUST_BE_ABSTRACT +// JAVAC:UNKNOWN +// +/** + * Hierarchy check: + * - A class that has (declares or inherits) any abstract methods must + * be abstract (8.1.1.1). (method run() not implemented) + */ +public class Main implements Runnable{ + + public Main(){ + } + + public static int test(){ + return 123; + } + +} diff --git a/Tests/A2/Je_4_AbstractMethod_InheritFromInterface_1/java/lang/Runnable.java b/Tests/A2/Je_4_AbstractMethod_InheritFromInterface_1/java/lang/Runnable.java new file mode 100644 index 0000000000000000000000000000000000000000..0e09c43103ca735d27545dadc5292720be9474b3 --- /dev/null +++ b/Tests/A2/Je_4_AbstractMethod_InheritFromInterface_1/java/lang/Runnable.java @@ -0,0 +1,5 @@ +package java.lang; + +public interface Runnable { + public void run(); +} diff --git a/Tests/A2/Je_4_AbstractMethod_InheritFromInterface_2/Main.java b/Tests/A2/Je_4_AbstractMethod_InheritFromInterface_2/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..7773c4bad4c3e9d4544323c1b5330b1cb7690bcb --- /dev/null +++ b/Tests/A2/Je_4_AbstractMethod_InheritFromInterface_2/Main.java @@ -0,0 +1,25 @@ +// JOOS1:HIERARCHY,CLASS_MUST_BE_ABSTRACT +// JOOS2:HIERARCHY,CLASS_MUST_BE_ABSTRACT +// JAVAC:UNKNOWN +// +/** + * Hierarchy check: + * - A class that has (declares or inherits) any abstract methods must + * be abstract (8.1.1.1). (method compare(Object, Object) not implemented) + */ +import java.util.Comparator; + +public class Main implements Comparator{ + + public Main(){ + } + + public boolean equals(Object obj){ + return true; + } + + public static int test(){ + return 123; + } + +} diff --git a/Tests/A2/Je_4_AbstractMethod_InheritFromInterface_2/java/util/Comparator.java b/Tests/A2/Je_4_AbstractMethod_InheritFromInterface_2/java/util/Comparator.java new file mode 100644 index 0000000000000000000000000000000000000000..775e87208f6b105ba0228f16b187c88967c137fe --- /dev/null +++ b/Tests/A2/Je_4_AbstractMethod_InheritFromInterface_2/java/util/Comparator.java @@ -0,0 +1,5 @@ +package java.util; + +public interface Comparator { + public int compare(Object o1, Object o2); +} diff --git a/Tests/A2/Je_4_AbstractMethod_InheritFromSuperInterface/Main.java b/Tests/A2/Je_4_AbstractMethod_InheritFromSuperInterface/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..d37d8b6ab833bd6f8ad36d75ab84bbb05de54299 --- /dev/null +++ b/Tests/A2/Je_4_AbstractMethod_InheritFromSuperInterface/Main.java @@ -0,0 +1,98 @@ +// JOOS1:HIERARCHY,CLASS_MUST_BE_ABSTRACT +// JOOS2:HIERARCHY,CLASS_MUST_BE_ABSTRACT +// JAVAC:UNKNOWN +// +/** + * Hierarchy check: + + * - A class that has (declares or inherits) any abstract methods must + * be abstract (8.1.1.1). (Method addAll(Collection) from Set not + * implemented) + */ +import java.util.*; + +public class Main implements SortedSet{ + public Main(){} + + public Comparator comparator(){ + return null; + } + + public Object first(){ + return null; + } + + public SortedSet headSet(Object toElement){ + return null; + } + + public Object last(){ + return null; + } + + public SortedSet subSet(Object fromElement, Object toElement){ + return null; + } + + public SortedSet tailSet(Object fromElement){ + return null; + } + + public boolean add(Object o){ + return false; + } + + public void clear(){} + + public boolean contains(Object o){ + return false; + } + + public boolean containsAll(Collection c){ + return false; + } + + public boolean equals(Object o){ + return false; + } + + public int hashCode(){ + return 0; + } + + public boolean isEmpty(){ + return false; + } + + public Iterator iterator(){ + return null; + } + + public boolean remove(Object o){ + return false; + } + + public boolean removeAll(Collection c){ + return false; + } + + public boolean retainAll(Collection c){ + return false; + } + + public int size(){ + return 0; + } + + public Object[] toArray(){ + return null; + } + + public Object[] toArray(Object[] a){ + return null; + } + + public static int test(){ + return 123; + } +} diff --git a/Tests/A2/Je_4_AbstractMethod_InheritFromSuperInterface/java/util/Collection.java b/Tests/A2/Je_4_AbstractMethod_InheritFromSuperInterface/java/util/Collection.java new file mode 100644 index 0000000000000000000000000000000000000000..9be463e2a558b848d566ba3b86fdfbf3cd50ea2f --- /dev/null +++ b/Tests/A2/Je_4_AbstractMethod_InheritFromSuperInterface/java/util/Collection.java @@ -0,0 +1,4 @@ +package java.util; + +public interface Collection { +} diff --git a/Tests/A2/Je_4_AbstractMethod_InheritFromSuperInterface/java/util/Comparator.java b/Tests/A2/Je_4_AbstractMethod_InheritFromSuperInterface/java/util/Comparator.java new file mode 100644 index 0000000000000000000000000000000000000000..775e87208f6b105ba0228f16b187c88967c137fe --- /dev/null +++ b/Tests/A2/Je_4_AbstractMethod_InheritFromSuperInterface/java/util/Comparator.java @@ -0,0 +1,5 @@ +package java.util; + +public interface Comparator { + public int compare(Object o1, Object o2); +} diff --git a/Tests/A2/Je_4_AbstractMethod_InheritFromSuperInterface/java/util/Iterator.java b/Tests/A2/Je_4_AbstractMethod_InheritFromSuperInterface/java/util/Iterator.java new file mode 100644 index 0000000000000000000000000000000000000000..b3ceee1bebc73fc62667a4dce70301dc8a6f9257 --- /dev/null +++ b/Tests/A2/Je_4_AbstractMethod_InheritFromSuperInterface/java/util/Iterator.java @@ -0,0 +1,6 @@ +package java.util; +public interface Iterator { + public void remove(); + public boolean hasNext(); + public Object next(); +} diff --git a/Tests/A2/Je_4_AbstractMethod_InheritFromSuperInterface/java/util/Set.java b/Tests/A2/Je_4_AbstractMethod_InheritFromSuperInterface/java/util/Set.java new file mode 100644 index 0000000000000000000000000000000000000000..f106e7533984b05c9cb43b0fc6af5ed8ce8f7438 --- /dev/null +++ b/Tests/A2/Je_4_AbstractMethod_InheritFromSuperInterface/java/util/Set.java @@ -0,0 +1,4 @@ +package java.util; +public interface Set extends Collection { + public boolean addAll(Collection c); +} diff --git a/Tests/A2/Je_4_AbstractMethod_InheritFromSuperInterface/java/util/SortedSet.java b/Tests/A2/Je_4_AbstractMethod_InheritFromSuperInterface/java/util/SortedSet.java new file mode 100644 index 0000000000000000000000000000000000000000..629e5bc5827e15f83c9c94d4e5e0398dd98ff1eb --- /dev/null +++ b/Tests/A2/Je_4_AbstractMethod_InheritFromSuperInterface/java/util/SortedSet.java @@ -0,0 +1,3 @@ +package java.util; +public interface SortedSet extends Set { +} diff --git a/Tests/A2/Je_4_AbstractMethod_InheritFromSuperclass/Main.java b/Tests/A2/Je_4_AbstractMethod_InheritFromSuperclass/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..256716ba760f31020895b3f8d30fb247341e0a42 --- /dev/null +++ b/Tests/A2/Je_4_AbstractMethod_InheritFromSuperclass/Main.java @@ -0,0 +1,18 @@ +// JOOS1:HIERARCHY,CLASS_MUST_BE_ABSTRACT +// JOOS2:HIERARCHY,CLASS_MUST_BE_ABSTRACT +// JAVAC:UNKNOWN +// +/** + * Hierarchy: + * - A class that has (declares or inherits) any abstract methods must + * be abstract (8.1.1.1, well-formedness constraint 4). + */ +public class Main extends Number{ + + public Main() {} + + public static int test(){ + return 123; + } + +} diff --git a/Tests/A2/Je_4_AbstractMethod_InheritFromSuperclassInterface/Foo.java b/Tests/A2/Je_4_AbstractMethod_InheritFromSuperclassInterface/Foo.java new file mode 100644 index 0000000000000000000000000000000000000000..f707b72860f4b8540c8ed7bada8dd8c8d92af8fc --- /dev/null +++ b/Tests/A2/Je_4_AbstractMethod_InheritFromSuperclassInterface/Foo.java @@ -0,0 +1,12 @@ +/** + * Hierarchy check: + + * - A class that has (declares or inherits) any abstract methods must + * be abstract (8.1.1.1). (Method addAll(Collection) from Set not + * implemented) + */ +public abstract class Foo implements Runnable{ + + public Foo(){} + +} diff --git a/Tests/A2/Je_4_AbstractMethod_InheritFromSuperclassInterface/Main.java b/Tests/A2/Je_4_AbstractMethod_InheritFromSuperclassInterface/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..223f7d07f2e5e1e13f7bed94737e4c0413dfc398 --- /dev/null +++ b/Tests/A2/Je_4_AbstractMethod_InheritFromSuperclassInterface/Main.java @@ -0,0 +1,18 @@ +// JOOS1:HIERARCHY,CLASS_MUST_BE_ABSTRACT +// JOOS2:HIERARCHY,CLASS_MUST_BE_ABSTRACT +// JAVAC:UNKNOWN +// +/** + * Hierarchy check: + * - A class that has (declares or inherits) any abstract methods must + * be abstract (8.1.1.1). (Method run() from Runnable not + * implemented) + */ +public class Main extends Foo{ + + public Main(){} + + public static int test(){ + return 123; + } +} diff --git a/Tests/A2/Je_4_AbstractMethod_InheritFromSuperclassInterface/java/lang/Runnable.java b/Tests/A2/Je_4_AbstractMethod_InheritFromSuperclassInterface/java/lang/Runnable.java new file mode 100644 index 0000000000000000000000000000000000000000..0e09c43103ca735d27545dadc5292720be9474b3 --- /dev/null +++ b/Tests/A2/Je_4_AbstractMethod_InheritFromSuperclassInterface/java/lang/Runnable.java @@ -0,0 +1,5 @@ +package java.lang; + +public interface Runnable { + public void run(); +} diff --git a/Tests/A2/Je_4_AbstractMethod_NotAllImplemented/Main.java b/Tests/A2/Je_4_AbstractMethod_NotAllImplemented/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..061fd4257c35d267307c880205c2009600128151 --- /dev/null +++ b/Tests/A2/Je_4_AbstractMethod_NotAllImplemented/Main.java @@ -0,0 +1,18 @@ +// JOOS1:HIERARCHY,CLASS_MUST_BE_ABSTRACT +// JOOS2:HIERARCHY,CLASS_MUST_BE_ABSTRACT +// JAVAC:UNKNOWN +// +/* Hierarchy: + * A class that has (declares or inherits) any abstract methods must be abstract + * (8.1.1.1, well-formedness constraint 4). + * + * int compareTo(Object o) is still abstract + */ + +public class Main implements Comparable { + public Main() {} + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/Je_4_AbstractMethod_NotAllImplemented/java/lang/Comparable.java b/Tests/A2/Je_4_AbstractMethod_NotAllImplemented/java/lang/Comparable.java new file mode 100644 index 0000000000000000000000000000000000000000..3b4d1a9bc2c2268781be9257344534da360ffddf --- /dev/null +++ b/Tests/A2/Je_4_AbstractMethod_NotAllImplemented/java/lang/Comparable.java @@ -0,0 +1,5 @@ +package java.lang; + +public interface Comparable { + public int compareTo(Object o); +} diff --git a/Tests/A2/Je_4_ClassExtendsCyclicClass/A.java b/Tests/A2/Je_4_ClassExtendsCyclicClass/A.java new file mode 100644 index 0000000000000000000000000000000000000000..def05bf4210ca092e4c4e6dc530d41c3f490742a --- /dev/null +++ b/Tests/A2/Je_4_ClassExtendsCyclicClass/A.java @@ -0,0 +1,3 @@ +public class A extends B { + public A() {} +} diff --git a/Tests/A2/Je_4_ClassExtendsCyclicClass/B.java b/Tests/A2/Je_4_ClassExtendsCyclicClass/B.java new file mode 100644 index 0000000000000000000000000000000000000000..730a6f419b65a7ab4b57484d32e3fecba165c7bd --- /dev/null +++ b/Tests/A2/Je_4_ClassExtendsCyclicClass/B.java @@ -0,0 +1,3 @@ +public class B extends C { + public B() {} +} diff --git a/Tests/A2/Je_4_ClassExtendsCyclicClass/C.java b/Tests/A2/Je_4_ClassExtendsCyclicClass/C.java new file mode 100644 index 0000000000000000000000000000000000000000..47e4900f58f282ab6991926f366834d12dbafaf6 --- /dev/null +++ b/Tests/A2/Je_4_ClassExtendsCyclicClass/C.java @@ -0,0 +1,3 @@ +public class C extends B { + public C() {} +} diff --git a/Tests/A2/Je_4_ClassExtendsCyclicClass/Main.java b/Tests/A2/Je_4_ClassExtendsCyclicClass/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..4fbb55d1450ca05ab4e5245c4ae4564e6dfac20b --- /dev/null +++ b/Tests/A2/Je_4_ClassExtendsCyclicClass/Main.java @@ -0,0 +1,20 @@ +// JOOS1:HIERARCHY,CIRCULAR_INHERITANCE +// JOOS2:HIERARCHY,CIRCULAR_INHERITANCE +// JAVAC:UNKNOWN +// +/* HierarchyCheck: + * A class or interface must not depend on itself + * (8.1.3, 9.1.2, well-formedness constraint 1). + * + * A extends B + * B extends C + * C extends B + */ + +public class Main { + public Main() {} + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/Je_4_DuplicateConstructor_Args.java b/Tests/A2/Je_4_DuplicateConstructor_Args.java new file mode 100644 index 0000000000000000000000000000000000000000..54e01eda18b20fee4a84beedeab1e748149b8a23 --- /dev/null +++ b/Tests/A2/Je_4_DuplicateConstructor_Args.java @@ -0,0 +1,19 @@ +// JOOS1:HIERARCHY,DUPLICATE_CONSTRUCTOR +// JOOS2:HIERARCHY,DUPLICATE_CONSTRUCTOR +// JAVAC:UNKNOWN +// +/** + * Hierarchy: + * - A class must not declare two constructors with the same parameter + * types (8.8.2, simple constraint 5). + */ +public class Je_4_DuplicateConstructor_Args { + + public Je_4_DuplicateConstructor_Args(int foo) { } + + public Je_4_DuplicateConstructor_Args(int bar) { } + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/Je_4_DuplicateConstructor_ArrayArgs.java b/Tests/A2/Je_4_DuplicateConstructor_ArrayArgs.java new file mode 100644 index 0000000000000000000000000000000000000000..baca168218682d9e0fd1add8dde5d31801230a53 --- /dev/null +++ b/Tests/A2/Je_4_DuplicateConstructor_ArrayArgs.java @@ -0,0 +1,17 @@ +// JOOS1:HIERARCHY,DUPLICATE_CONSTRUCTOR +// JOOS2:HIERARCHY,DUPLICATE_CONSTRUCTOR +// JAVAC:UNKNOWN +// +/** + * Hierarchy: + * - A class must not declare two constructors with the same parameter + * types (8.8.2, simple constraint 5). + */ +public class Je_4_DuplicateConstructor_ArrayArgs { + public Je_4_DuplicateConstructor_ArrayArgs(String[] a) {} + public Je_4_DuplicateConstructor_ArrayArgs(String[] b) {} + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/Je_4_DuplicateConstructor_NoArgs.java b/Tests/A2/Je_4_DuplicateConstructor_NoArgs.java new file mode 100644 index 0000000000000000000000000000000000000000..0a20e116e4331149fe7f9c4600d59ad15eee836e --- /dev/null +++ b/Tests/A2/Je_4_DuplicateConstructor_NoArgs.java @@ -0,0 +1,19 @@ +// JOOS1:HIERARCHY,DUPLICATE_CONSTRUCTOR +// JOOS2:HIERARCHY,DUPLICATE_CONSTRUCTOR +// JAVAC:UNKNOWN +// +/** + * Hierarchy: + * - A class must not declare two constructors with the same parameter + * types (8.8.2, simple constraint 5). + */ +public class Je_4_DuplicateConstructor_NoArgs { + + public Je_4_DuplicateConstructor_NoArgs() { } + + public Je_4_DuplicateConstructor_NoArgs() { } + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/Je_4_DuplicateMethodDeclare_Args.java b/Tests/A2/Je_4_DuplicateMethodDeclare_Args.java new file mode 100644 index 0000000000000000000000000000000000000000..edcc00d01f85429043365652af2b15e4159f91e6 --- /dev/null +++ b/Tests/A2/Je_4_DuplicateMethodDeclare_Args.java @@ -0,0 +1,19 @@ +// JOOS1:HIERARCHY,DUPLICATE_METHOD +// JOOS2:HIERARCHY,DUPLICATE_METHOD +// JAVAC:UNKNOWN +// +/** + * Hierarchy: + * - A class or interface must not declare two methods with the same + * name and parameter types (8.4, 9.4, well-formedness constraint 2). + */ +public class Je_4_DuplicateMethodDeclare_Args { + + public Je_4_DuplicateMethodDeclare_Args() { } + + public static int test() { return 123; } + + public void foo(int p) {} + + public void foo(int a) {} +} diff --git a/Tests/A2/Je_4_DuplicateMethodDeclare_ArrayArgs.java b/Tests/A2/Je_4_DuplicateMethodDeclare_ArrayArgs.java new file mode 100644 index 0000000000000000000000000000000000000000..b1fca1754d46055745175d7ccf177e4b2ef3359e --- /dev/null +++ b/Tests/A2/Je_4_DuplicateMethodDeclare_ArrayArgs.java @@ -0,0 +1,19 @@ +// JOOS1:HIERARCHY,DUPLICATE_METHOD +// JOOS2:HIERARCHY,DUPLICATE_METHOD +// JAVAC:UNKNOWN +// +/** + * Hierarchy: + * - A class or interface must not declare two methods with the same + * name and parameter types (8.4, 9.4, well-formedness constraint 2). + */ +public class Je_4_DuplicateMethodDeclare_ArrayArgs { + public Je_4_DuplicateMethodDeclare_ArrayArgs() {} + + public void method(String[] a) {} + public void method(String[] b) {} + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/Je_4_DuplicateMethodDeclare_DifferentReturnTypes.java b/Tests/A2/Je_4_DuplicateMethodDeclare_DifferentReturnTypes.java new file mode 100644 index 0000000000000000000000000000000000000000..3e7d1f5cb457e38584b36f9434144dce42b93dea --- /dev/null +++ b/Tests/A2/Je_4_DuplicateMethodDeclare_DifferentReturnTypes.java @@ -0,0 +1,25 @@ +// JOOS1:HIERARCHY,DUPLICATE_METHOD +// JOOS2:HIERARCHY,DUPLICATE_METHOD +// JAVAC:UNKNOWN +// +/** + * - Hierarchy check: + * - A class or interface must not declare two methods with the same + * name and parameter types (8.4, 9.4). + */ +public class Je_4_DuplicateMethodDeclare_DifferentReturnTypes { + + public Je_4_DuplicateMethodDeclare_DifferentReturnTypes() {} + + public int foo(String s) { + return 7; + } + + public String foo(String s) { + return "7"; + } + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/Je_4_DuplicateMethodDeclare_NoArgs.java b/Tests/A2/Je_4_DuplicateMethodDeclare_NoArgs.java new file mode 100644 index 0000000000000000000000000000000000000000..232189f175d1e909f9847800865807ba09547711 --- /dev/null +++ b/Tests/A2/Je_4_DuplicateMethodDeclare_NoArgs.java @@ -0,0 +1,21 @@ +// JOOS1:HIERARCHY,DUPLICATE_METHOD +// JOOS2:HIERARCHY,DUPLICATE_METHOD +// JAVAC:UNKNOWN +// +/** + * Hierarchy: + * - A class or interface must not declare two methods with the same + * name and parameter types (8.4, 9.4, well-formedness constraint 2). + */ +public class Je_4_DuplicateMethodDeclare_NoArgs { + + public Je_4_DuplicateMethodDeclare_NoArgs() { } + + public static int test() { + return 123; + } + + public void foo() {} + + public void foo() {} +} diff --git a/Tests/A2/Je_4_ExtendFinal.java b/Tests/A2/Je_4_ExtendFinal.java new file mode 100644 index 0000000000000000000000000000000000000000..d58194bb4e432a921988d946716aefadf4ef6a99 --- /dev/null +++ b/Tests/A2/Je_4_ExtendFinal.java @@ -0,0 +1,18 @@ +// JOOS1:HIERARCHY,EXTENDS_FINAL_CLASS +// JOOS2:HIERARCHY,EXTENDS_FINAL_CLASS +// JAVAC:UNKNOWN +// +/** + * Hierarchy: + * - A class must not extend a final class (8.1.1.2, 8.1.3, simple + * constraint 4). + */ +public class Je_4_ExtendFinal extends Integer { + + public Je_4_ExtendFinal() {} + + public static int test() { + return 123; + } + +} diff --git a/Tests/A2/Je_4_ExtendNonClass/Main.java b/Tests/A2/Je_4_ExtendNonClass/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..28597818cd587d1dfaecd5cfda4c9fcc33a00497 --- /dev/null +++ b/Tests/A2/Je_4_ExtendNonClass/Main.java @@ -0,0 +1,16 @@ +// JOOS1:HIERARCHY,EXTENDS_NON_CLASS +// JOOS2:HIERARCHY,EXTENDS_NON_CLASS +// JAVAC:UNKNOWN +// +/** + * Hierarchy: + * - The type mentioned in the extends clause of a class must be a class (8.1.3, simple constraint 1). + */ +public class Main extends Cloneable{ + + public Main(){} + + public static int test(){ + return 123; + } +} diff --git a/Tests/A2/Je_4_FinalHide/Main.java b/Tests/A2/Je_4_FinalHide/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..bb67f88a39d47089bcb4fcd51ada1693e8aadec6 --- /dev/null +++ b/Tests/A2/Je_4_FinalHide/Main.java @@ -0,0 +1,21 @@ +// JOOS1:HIERARCHY,REPLACE_FINAL +// JOOS2:HIERARCHY,REPLACE_FINAL +// JAVAC:UNKNOWN +// +/* JLS 8.4.3.3: + * It is a compile-time error to attempt to override or hide a final method. + */ + +import javax.swing.text.*; + +public class Main extends Utilities { + public Main() {} + + public int getRowStart(JTextComponent c, int offs) { + return 0; + } + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/Je_4_FinalHide/javax/swing/text/JTextComponent.java b/Tests/A2/Je_4_FinalHide/javax/swing/text/JTextComponent.java new file mode 100644 index 0000000000000000000000000000000000000000..b90b3f2d34d5593b77ad5193e9e3d45111db9b88 --- /dev/null +++ b/Tests/A2/Je_4_FinalHide/javax/swing/text/JTextComponent.java @@ -0,0 +1,5 @@ +package javax.swing.text; +public class JTextComponent { + public JTextComponent() { + } +} diff --git a/Tests/A2/Je_4_FinalHide/javax/swing/text/Utilities.java b/Tests/A2/Je_4_FinalHide/javax/swing/text/Utilities.java new file mode 100644 index 0000000000000000000000000000000000000000..77edca0a11aa0b6cacd3f43084c1ccb010d6bf54 --- /dev/null +++ b/Tests/A2/Je_4_FinalHide/javax/swing/text/Utilities.java @@ -0,0 +1,8 @@ +package javax.swing.text; +public class Utilities { + public Utilities() { + } + public final int getRowStart(javax.swing.text.JTextComponent a, int b) { + return 1; + } +} diff --git a/Tests/A2/Je_4_FinalOverride_DifferentReturnTypes.java b/Tests/A2/Je_4_FinalOverride_DifferentReturnTypes.java new file mode 100644 index 0000000000000000000000000000000000000000..fd6cce321eb36934f7f2348ae6d5748a6e017ed0 --- /dev/null +++ b/Tests/A2/Je_4_FinalOverride_DifferentReturnTypes.java @@ -0,0 +1,22 @@ +// JOOS1:HIERARCHY,REPLACE_FINAL,DIFFERENT_RETURN_TYPE +// JOOS2:HIERARCHY,REPLACE_FINAL,DIFFERENT_RETURN_TYPE +// JAVAC:UNKNOWN +// +/** + * Hierarchy: + * - A method must not override a final method (8.4.3.3, + * well-formedness constraint 9). + */ +public class Je_4_FinalOverride_DifferentReturnTypes { + + public Je_4_FinalOverride_DifferentReturnTypes(){} + + public Object getClass(){ + return new Object(); + } + + public static int test(){ + return 123; + } + +} diff --git a/Tests/A2/Je_4_FinalOverride_SameSignature.java b/Tests/A2/Je_4_FinalOverride_SameSignature.java new file mode 100644 index 0000000000000000000000000000000000000000..310b58e86b1080bf0ba7b9e7a51c10328996df5d --- /dev/null +++ b/Tests/A2/Je_4_FinalOverride_SameSignature.java @@ -0,0 +1,22 @@ +// JOOS1:HIERARCHY,REPLACE_FINAL +// JOOS2:HIERARCHY,REPLACE_FINAL +// JAVAC:UNKNOWN +// +/** + * Hierarchy: + * - A method must not override a final method (8.4.3.3, + * well-formedness constraint 9). + */ +public class Je_4_FinalOverride_SameSignature { + + public Je_4_FinalOverride_SameSignature(){} + + public Class getClass(){ + return new Object().getClass(); + } + + public static int test(){ + return 123; + } + +} diff --git a/Tests/A2/Je_4_Hide_DifferentReturnTypes/A.java b/Tests/A2/Je_4_Hide_DifferentReturnTypes/A.java new file mode 100644 index 0000000000000000000000000000000000000000..dc4ff19f1496c45e78ac80c46221c676f65b0ccc --- /dev/null +++ b/Tests/A2/Je_4_Hide_DifferentReturnTypes/A.java @@ -0,0 +1,5 @@ +public class A { + public A() {} + + public static void test() {} +} diff --git a/Tests/A2/Je_4_Hide_DifferentReturnTypes/Main.java b/Tests/A2/Je_4_Hide_DifferentReturnTypes/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..d14ad104e2a3ba063984ccfe0cb3d389327a8ab2 --- /dev/null +++ b/Tests/A2/Je_4_Hide_DifferentReturnTypes/Main.java @@ -0,0 +1,12 @@ +// JOOS1:HIERARCHY,DIFFERENT_RETURN_TYPE +// JOOS2:HIERARCHY,DIFFERENT_RETURN_TYPE +// JAVAC:UNKNOWN +// +public class Main extends A { + public Main() {} + + /* HierarchyCheck => return type incompatible with A.test() (JLS 8.4.6.3) */ + public static int test() { + return 123; + } +} diff --git a/Tests/A2/Je_4_ImplementNonInterface_Class.java b/Tests/A2/Je_4_ImplementNonInterface_Class.java new file mode 100644 index 0000000000000000000000000000000000000000..e52eb87148a286a43f52490b0812e3466442a2a6 --- /dev/null +++ b/Tests/A2/Je_4_ImplementNonInterface_Class.java @@ -0,0 +1,18 @@ +// JOOS1:HIERARCHY,IMPLEMENTS_NON_INTERFACE +// JOOS2:HIERARCHY,IMPLEMENTS_NON_INTERFACE +// JAVAC:UNKNOWN +// +/** + * Hierarchy: + * - All types mentioned in the implements clause of a class must be + * interfaces (8.1.4, simple constraint 2). + */ +public class Je_4_ImplementNonInterface_Class implements Object { + + public Je_4_ImplementNonInterface_Class() {} + + public static int test() { + return 123; + } + +} diff --git a/Tests/A2/Je_4_ImplementNonInterface_InterfaceAndClass/Main.java b/Tests/A2/Je_4_ImplementNonInterface_InterfaceAndClass/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..4cd7289e1d7c49c8e59ed60e72b823a71d05413a --- /dev/null +++ b/Tests/A2/Je_4_ImplementNonInterface_InterfaceAndClass/Main.java @@ -0,0 +1,18 @@ +// JOOS1:HIERARCHY,IMPLEMENTS_NON_INTERFACE +// JOOS2:HIERARCHY,IMPLEMENTS_NON_INTERFACE +// JAVAC:UNKNOWN +// +/** + * Hierarchy: + * - All types mentioned in the implements clause of a class must be + * interfaces (8.1.4, simple constraint 2) + */ +public class Main implements Cloneable, Object{ + + public Main(){} + + public static int test(){ + return 123; + } + +} diff --git a/Tests/A2/Je_4_ImplementTwice_QualifiedName/Main.java b/Tests/A2/Je_4_ImplementTwice_QualifiedName/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..c8b6844fd1a74449eeb72552819bb23e9407d3ab --- /dev/null +++ b/Tests/A2/Je_4_ImplementTwice_QualifiedName/Main.java @@ -0,0 +1,22 @@ +// JOOS1:HIERARCHY,REPEATED_INTERFACE +// JOOS2:HIERARCHY,REPEATED_INTERFACE +// JAVAC:UNKNOWN +// +/** + * Hierarchy: + * - An interface must not be mentioned more than once in the same + * implements clause of a class (8.1.4, simple constraint 3). + */ +import java.io.*; + +public class Main implements Runnable, Serializable, Cloneable, java.io.Serializable{ + + public Main(){} + + public static int test(){ + return 123; + } + + public void run(){} + +} diff --git a/Tests/A2/Je_4_ImplementTwice_QualifiedName/java/lang/Runnable.java b/Tests/A2/Je_4_ImplementTwice_QualifiedName/java/lang/Runnable.java new file mode 100644 index 0000000000000000000000000000000000000000..0e09c43103ca735d27545dadc5292720be9474b3 --- /dev/null +++ b/Tests/A2/Je_4_ImplementTwice_QualifiedName/java/lang/Runnable.java @@ -0,0 +1,5 @@ +package java.lang; + +public interface Runnable { + public void run(); +} diff --git a/Tests/A2/Je_4_ImplementTwice_SimpleName/Main.java b/Tests/A2/Je_4_ImplementTwice_SimpleName/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..47e8304e7b8a7c7659e0e8b7db030bef3939ab9a --- /dev/null +++ b/Tests/A2/Je_4_ImplementTwice_SimpleName/Main.java @@ -0,0 +1,22 @@ +// JOOS1:HIERARCHY,REPEATED_INTERFACE +// JOOS2:HIERARCHY,REPEATED_INTERFACE +// JAVAC:UNKNOWN +// +/** + * Hierarchy: + * - An interface must not be mentioned more than once in the same + * implements clause of a class (8.1.4, simple constraint 3). + */ +import java.io.Serializable; + +public class Main implements Runnable, Serializable, Cloneable, Serializable{ + + public Main(){} + + public static int test(){ + return 123; + } + + public void run(){} + +} diff --git a/Tests/A2/Je_4_ImplementTwice_SimpleName/java/lang/Runnable.java b/Tests/A2/Je_4_ImplementTwice_SimpleName/java/lang/Runnable.java new file mode 100644 index 0000000000000000000000000000000000000000..0e09c43103ca735d27545dadc5292720be9474b3 --- /dev/null +++ b/Tests/A2/Je_4_ImplementTwice_SimpleName/java/lang/Runnable.java @@ -0,0 +1,5 @@ +package java.lang; + +public interface Runnable { + public void run(); +} diff --git a/Tests/A2/Je_4_InheritShadowsNonabstract/A.java b/Tests/A2/Je_4_InheritShadowsNonabstract/A.java new file mode 100644 index 0000000000000000000000000000000000000000..13e4aa4feea0f21257abe4d97d3af32e632d4df9 --- /dev/null +++ b/Tests/A2/Je_4_InheritShadowsNonabstract/A.java @@ -0,0 +1,7 @@ +public class A { + public A() {} + + public int m() { + return 123; + } +} diff --git a/Tests/A2/Je_4_InheritShadowsNonabstract/B.java b/Tests/A2/Je_4_InheritShadowsNonabstract/B.java new file mode 100644 index 0000000000000000000000000000000000000000..d0606a9b5926ed109200190bf8ebf23907b402b0 --- /dev/null +++ b/Tests/A2/Je_4_InheritShadowsNonabstract/B.java @@ -0,0 +1,5 @@ +public abstract class B extends A { + public B() {} + + public abstract int m(); +} diff --git a/Tests/A2/Je_4_InheritShadowsNonabstract/C.java b/Tests/A2/Je_4_InheritShadowsNonabstract/C.java new file mode 100644 index 0000000000000000000000000000000000000000..47e4900f58f282ab6991926f366834d12dbafaf6 --- /dev/null +++ b/Tests/A2/Je_4_InheritShadowsNonabstract/C.java @@ -0,0 +1,3 @@ +public class C extends B { + public C() {} +} diff --git a/Tests/A2/Je_4_InheritShadowsNonabstract/Main.java b/Tests/A2/Je_4_InheritShadowsNonabstract/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..5b2fadb1065199275d386a5d8d792701fe98f63a --- /dev/null +++ b/Tests/A2/Je_4_InheritShadowsNonabstract/Main.java @@ -0,0 +1,21 @@ +// JOOS1:HIERARCHY,CLASS_MUST_BE_ABSTRACT +// JOOS2:HIERARCHY,CLASS_MUST_BE_ABSTRACT +// JAVAC:UNKNOWN +// +/* Hierarchy: + * A class that has (declares or inherits) any abstract methods must be abstract + * (8.1.1.1, well-formedness constraint 4). + * + * A declares m() as non-abstract + * B extends A and declares m() as abstract + * C extends B and does not declare m() => m() is still abstract + */ + +public class Main { + public Main() {} + + public static int test() { + C c = new C(); + return c.m(); + } +} diff --git a/Tests/A2/Je_4_InterfaceExtendsCyclicInterface/A.java b/Tests/A2/Je_4_InterfaceExtendsCyclicInterface/A.java new file mode 100644 index 0000000000000000000000000000000000000000..304a35af85c64ebf9a97efa0506f4510b4f3baad --- /dev/null +++ b/Tests/A2/Je_4_InterfaceExtendsCyclicInterface/A.java @@ -0,0 +1,2 @@ +public interface A extends B { +} diff --git a/Tests/A2/Je_4_InterfaceExtendsCyclicInterface/B.java b/Tests/A2/Je_4_InterfaceExtendsCyclicInterface/B.java new file mode 100644 index 0000000000000000000000000000000000000000..7348d37e5d8a9cf39c522bc5909ccb21b335055d --- /dev/null +++ b/Tests/A2/Je_4_InterfaceExtendsCyclicInterface/B.java @@ -0,0 +1,2 @@ +public interface B extends C { +} diff --git a/Tests/A2/Je_4_InterfaceExtendsCyclicInterface/C.java b/Tests/A2/Je_4_InterfaceExtendsCyclicInterface/C.java new file mode 100644 index 0000000000000000000000000000000000000000..a9f1f42b60f71292560d2c7d102f97b5b72e5cda --- /dev/null +++ b/Tests/A2/Je_4_InterfaceExtendsCyclicInterface/C.java @@ -0,0 +1,2 @@ +public interface C extends B { +} diff --git a/Tests/A2/Je_4_InterfaceExtendsCyclicInterface/Main.java b/Tests/A2/Je_4_InterfaceExtendsCyclicInterface/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..7cca13d4938cc838d894c96fadb7a3377e9866f3 --- /dev/null +++ b/Tests/A2/Je_4_InterfaceExtendsCyclicInterface/Main.java @@ -0,0 +1,20 @@ +// JOOS1:PARSER_WEEDER,JOOS1_INTERFACE,PARSER_EXCEPTION +// JOOS2:HIERARCHY,CIRCULAR_INHERITANCE +// JAVAC:UNKNOWN +// +/* HierarchyCheck: + * A class or interface must not depend on itself + * (8.1.3, 9.1.2, well-formedness constraint 1). + * + * A extends B + * B extends C + * C extends B + */ + +public class Main { + public Main() {} + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/Je_4_Interface_FinalMethodFromObject/A.java b/Tests/A2/Je_4_Interface_FinalMethodFromObject/A.java new file mode 100644 index 0000000000000000000000000000000000000000..c20abeb17acd61388307b2f5e79c0f952a6f9045 --- /dev/null +++ b/Tests/A2/Je_4_Interface_FinalMethodFromObject/A.java @@ -0,0 +1,2 @@ +public interface A { +} diff --git a/Tests/A2/Je_4_Interface_FinalMethodFromObject/B.java b/Tests/A2/Je_4_Interface_FinalMethodFromObject/B.java new file mode 100644 index 0000000000000000000000000000000000000000..8830abd2d93cb6a3aff242f7cafd25403539484f --- /dev/null +++ b/Tests/A2/Je_4_Interface_FinalMethodFromObject/B.java @@ -0,0 +1,3 @@ +public interface B extends A { + public Class getClass(); +} diff --git a/Tests/A2/Je_4_Interface_FinalMethodFromObject/Main.java b/Tests/A2/Je_4_Interface_FinalMethodFromObject/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..2833ff0687feeb8898753a0293f518c88ac257c2 --- /dev/null +++ b/Tests/A2/Je_4_Interface_FinalMethodFromObject/Main.java @@ -0,0 +1,11 @@ +//JOOS1:PARSER_WEEDER,PARSER_EXCEPTION,JOOS1_INTERFACE +//JOOS2:HIERARCHY,REPLACE_FINAL +//JAVAC:UNKNOWN + +public class Main { + public Main() {} + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/Je_4_Override_DifferentReturnTypesFromInterface/Main.java b/Tests/A2/Je_4_Override_DifferentReturnTypesFromInterface/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..a343a94f9af4821bdce4c1d42c850557c64bb16b --- /dev/null +++ b/Tests/A2/Je_4_Override_DifferentReturnTypesFromInterface/Main.java @@ -0,0 +1,23 @@ +// JOOS1:HIERARCHY,DIFFERENT_RETURN_TYPE +// JOOS2:HIERARCHY,DIFFERENT_RETURN_TYPE +// JAVAC:UNKNOWN +// +/** + * Hierarchy check: + * - A class or interface must not have (declare or inherit) two + * methods with the same name and parameter types but different return + * types (8.1.1.1, 8.4, 8.4.2, 8.4.6.3, 8.4.6.4, 9.2, 9.4.1). (Method + * compareTo(Object) must return type int) + */ +public abstract class Main implements Comparable { + + public Main(){} + + public boolean compareTo(Object o){ + return true; + } + + public static int test(){ + return 123; + } +} diff --git a/Tests/A2/Je_4_Override_DifferentReturnTypesFromInterface/java/lang/Comparable.java b/Tests/A2/Je_4_Override_DifferentReturnTypesFromInterface/java/lang/Comparable.java new file mode 100644 index 0000000000000000000000000000000000000000..3b4d1a9bc2c2268781be9257344534da360ffddf --- /dev/null +++ b/Tests/A2/Je_4_Override_DifferentReturnTypesFromInterface/java/lang/Comparable.java @@ -0,0 +1,5 @@ +package java.lang; + +public interface Comparable { + public int compareTo(Object o); +} diff --git a/Tests/A2/Je_4_Override_DifferentReturnTypes_AbstractFromSuperclassAndInterface/Foo.java b/Tests/A2/Je_4_Override_DifferentReturnTypes_AbstractFromSuperclassAndInterface/Foo.java new file mode 100644 index 0000000000000000000000000000000000000000..a0568cdd1dd7411218998239a850f1e2fceda782 --- /dev/null +++ b/Tests/A2/Je_4_Override_DifferentReturnTypes_AbstractFromSuperclassAndInterface/Foo.java @@ -0,0 +1,6 @@ +public abstract class Foo{ + + public Foo(){} + + public abstract byte compareTo(Object o); +} diff --git a/Tests/A2/Je_4_Override_DifferentReturnTypes_AbstractFromSuperclassAndInterface/Main.java b/Tests/A2/Je_4_Override_DifferentReturnTypes_AbstractFromSuperclassAndInterface/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..710d08f4cb9c8f0557decebbe685a714d7ed1bef --- /dev/null +++ b/Tests/A2/Je_4_Override_DifferentReturnTypes_AbstractFromSuperclassAndInterface/Main.java @@ -0,0 +1,19 @@ +// JOOS1:HIERARCHY,DIFFERENT_RETURN_TYPE +// JOOS2:HIERARCHY,DIFFERENT_RETURN_TYPE +// JAVAC:UNKNOWN +// +/** + * Hierarchy: + * - A class or interface must not have (declare or inherit) two + * methods with the same name and parameter types but different return + * types (8.1.1.1, 8.4, 8.4.2, 8.4.6.3, 8.4.6.4, 9.2, 9.4.1). + */ +public abstract class Main extends Foo implements Comparable{ + + public Main(){} + + public static int test(){ + return 123; + } + +} diff --git a/Tests/A2/Je_4_Override_DifferentReturnTypes_AbstractFromSuperclassAndInterface/java/lang/Comparable.java b/Tests/A2/Je_4_Override_DifferentReturnTypes_AbstractFromSuperclassAndInterface/java/lang/Comparable.java new file mode 100644 index 0000000000000000000000000000000000000000..3b4d1a9bc2c2268781be9257344534da360ffddf --- /dev/null +++ b/Tests/A2/Je_4_Override_DifferentReturnTypes_AbstractFromSuperclassAndInterface/java/lang/Comparable.java @@ -0,0 +1,5 @@ +package java.lang; + +public interface Comparable { + public int compareTo(Object o); +} diff --git a/Tests/A2/Je_4_Override_DifferentReturnTypes_FromSuperclassAndInterface/Foo.java b/Tests/A2/Je_4_Override_DifferentReturnTypes_FromSuperclassAndInterface/Foo.java new file mode 100644 index 0000000000000000000000000000000000000000..40fe4833b7fba1c1dbec788204c2b8e62b81ccf3 --- /dev/null +++ b/Tests/A2/Je_4_Override_DifferentReturnTypes_FromSuperclassAndInterface/Foo.java @@ -0,0 +1,8 @@ +public class Foo { + + public Foo(){} + + public int run(){ + return 0; + } +} diff --git a/Tests/A2/Je_4_Override_DifferentReturnTypes_FromSuperclassAndInterface/Main.java b/Tests/A2/Je_4_Override_DifferentReturnTypes_FromSuperclassAndInterface/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..a1b3b308e4cac1f58c4f7e169ed9693f240cc90e --- /dev/null +++ b/Tests/A2/Je_4_Override_DifferentReturnTypes_FromSuperclassAndInterface/Main.java @@ -0,0 +1,19 @@ +// JOOS1:HIERARCHY,DIFFERENT_RETURN_TYPE +// JOOS2:HIERARCHY,DIFFERENT_RETURN_TYPE +// JAVAC:UNKNOWN +// +/** + * Hierarchy: + * - A class or interface must not have (declare or inherit) two + * methods with the same name and parameter types but different return + * types (8.1.1.1, 8.4, 8.4.2, 8.4.6.3, 8.4.6.4, 9.2, 9.4.1). (Method + * run() must return type void, but inherited method run() returns int) + */ +public abstract class Main extends Foo implements Runnable { + + public Main(){} + + public static int test(){ + return 123; + } +} diff --git a/Tests/A2/Je_4_Override_DifferentReturnTypes_FromSuperclassAndInterface/java/lang/Runnable.java b/Tests/A2/Je_4_Override_DifferentReturnTypes_FromSuperclassAndInterface/java/lang/Runnable.java new file mode 100644 index 0000000000000000000000000000000000000000..0e09c43103ca735d27545dadc5292720be9474b3 --- /dev/null +++ b/Tests/A2/Je_4_Override_DifferentReturnTypes_FromSuperclassAndInterface/java/lang/Runnable.java @@ -0,0 +1,5 @@ +package java.lang; + +public interface Runnable { + public void run(); +} diff --git a/Tests/A2/Je_4_Override_DifferentReturnTypes_FromSuperclassAndInterface_NonVoid/Foo.java b/Tests/A2/Je_4_Override_DifferentReturnTypes_FromSuperclassAndInterface_NonVoid/Foo.java new file mode 100644 index 0000000000000000000000000000000000000000..f924f906933ff024b5062bc5112659a122e27ab9 --- /dev/null +++ b/Tests/A2/Je_4_Override_DifferentReturnTypes_FromSuperclassAndInterface_NonVoid/Foo.java @@ -0,0 +1,8 @@ +public class Foo { + + public Foo(){} + + public String compareTo(Object o){ + return "0"; + } +} diff --git a/Tests/A2/Je_4_Override_DifferentReturnTypes_FromSuperclassAndInterface_NonVoid/Main.java b/Tests/A2/Je_4_Override_DifferentReturnTypes_FromSuperclassAndInterface_NonVoid/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..e9f54bc57a5a3091bef27a54bd1b9bb016597f8e --- /dev/null +++ b/Tests/A2/Je_4_Override_DifferentReturnTypes_FromSuperclassAndInterface_NonVoid/Main.java @@ -0,0 +1,20 @@ +// JOOS1:HIERARCHY,DIFFERENT_RETURN_TYPE +// JOOS2:HIERARCHY,DIFFERENT_RETURN_TYPE +// JAVAC:UNKNOWN +// +/** + * Hierarchy: + * - A class or interface must not have (declare or inherit) two + * methods with the same name and parameter types but different return + * types (8.1.1.1, 8.4, 8.4.2, 8.4.6.3, 8.4.6.4, 9.2, 9.4.1). (Method + * compareTo(Object) must return type int, but inherited method + * compareTo() returns String) + */ +public abstract class Main extends Foo implements Comparable { + + public Main(){} + + public static int test(){ + return 123; + } +} diff --git a/Tests/A2/Je_4_Override_DifferentReturnTypes_FromSuperclassAndInterface_NonVoid/java/lang/Comparable.java b/Tests/A2/Je_4_Override_DifferentReturnTypes_FromSuperclassAndInterface_NonVoid/java/lang/Comparable.java new file mode 100644 index 0000000000000000000000000000000000000000..3b4d1a9bc2c2268781be9257344534da360ffddf --- /dev/null +++ b/Tests/A2/Je_4_Override_DifferentReturnTypes_FromSuperclassAndInterface_NonVoid/java/lang/Comparable.java @@ -0,0 +1,5 @@ +package java.lang; + +public interface Comparable { + public int compareTo(Object o); +} diff --git a/Tests/A2/Je_4_Override_DifferentReturnTypes_TwoInterfaces/A.java b/Tests/A2/Je_4_Override_DifferentReturnTypes_TwoInterfaces/A.java new file mode 100644 index 0000000000000000000000000000000000000000..567fc54278763e93c28cd15b10d77d2c803fe3ce --- /dev/null +++ b/Tests/A2/Je_4_Override_DifferentReturnTypes_TwoInterfaces/A.java @@ -0,0 +1,3 @@ +public interface A { + public int foo(); +} diff --git a/Tests/A2/Je_4_Override_DifferentReturnTypes_TwoInterfaces/B.java b/Tests/A2/Je_4_Override_DifferentReturnTypes_TwoInterfaces/B.java new file mode 100644 index 0000000000000000000000000000000000000000..8fa2d0087b9a7eb3d8ccd9e4dc7c154dcfd5528b --- /dev/null +++ b/Tests/A2/Je_4_Override_DifferentReturnTypes_TwoInterfaces/B.java @@ -0,0 +1,3 @@ +public interface B { + public Object foo(); +} diff --git a/Tests/A2/Je_4_Override_DifferentReturnTypes_TwoInterfaces/Main.java b/Tests/A2/Je_4_Override_DifferentReturnTypes_TwoInterfaces/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..e6d9a4a57ea99f2ae0717f800617569c7c54d485 --- /dev/null +++ b/Tests/A2/Je_4_Override_DifferentReturnTypes_TwoInterfaces/Main.java @@ -0,0 +1,33 @@ +// JOOS1:HIERARCHY,DIFFERENT_RETURN_TYPE +// JOOS2:HIERARCHY,DIFFERENT_RETURN_TYPE +// JAVAC:UNKNOWN +// +/* + * Hierarchy: + * - A class or interface must not contain (declare or inherit) two + * methods with the same name and parameter types but different return + * types (8.1.1.1, 8.4, 8.4.2, 8.4.6.3, 8.4.6.4, 9.2, 9.4.1, + * well-formedness constraint 3). + * + * Interfaces javax.naming.Name and javax.naming.directory.Attribute are + * incompatible; both define getAll(), but with unrelated return + * types. + * + * + * javax.naming.directory.Attribute javax.naming.Name + * interface interface + * method NamingEnumeration getAll method Enumeration getAll + * \ / + * \ / + * foo + * abstract +*/ +public abstract class Main implements A, B { + + public Main () {} + + + public static int test(){ + return 123; + } +} diff --git a/Tests/A2/Je_4_ProtectedHide_FromSuperclass/A.java b/Tests/A2/Je_4_ProtectedHide_FromSuperclass/A.java new file mode 100644 index 0000000000000000000000000000000000000000..833220a88c0eaf070dd5bb7a4373006ee46f3d01 --- /dev/null +++ b/Tests/A2/Je_4_ProtectedHide_FromSuperclass/A.java @@ -0,0 +1,5 @@ +public class A { + public A() {} + + public static void method() {} +} diff --git a/Tests/A2/Je_4_ProtectedHide_FromSuperclass/Main.java b/Tests/A2/Je_4_ProtectedHide_FromSuperclass/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..6dabaf511ede9a19d887ba83655789f698df720d --- /dev/null +++ b/Tests/A2/Je_4_ProtectedHide_FromSuperclass/Main.java @@ -0,0 +1,18 @@ +// JOOS1:HIERARCHY,PROTECTED_REPLACE_PUBLIC +// JOOS2:HIERARCHY,PROTECTED_REPLACE_PUBLIC +// JAVAC:UNKNOWN +// +/** + * Hierarchy check: + * - A protected method must not hide a public method (8.4.6.3, + * well-formedness constraint 7). + **/ +public class Main extends A { + public Main() {} + + protected static void method() {} + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/Je_4_ProtectedOverride_Abstract/Foo.java b/Tests/A2/Je_4_ProtectedOverride_Abstract/Foo.java new file mode 100644 index 0000000000000000000000000000000000000000..7121b56ec4e87cafb1c1674ca9afee2b4c2c64d6 --- /dev/null +++ b/Tests/A2/Je_4_ProtectedOverride_Abstract/Foo.java @@ -0,0 +1,5 @@ +public abstract class Foo { + public Foo() {} + + public abstract void method(); +} diff --git a/Tests/A2/Je_4_ProtectedOverride_Abstract/Main.java b/Tests/A2/Je_4_ProtectedOverride_Abstract/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..cae479a1a8bd5f60aff7028ffc7587e61f19bbb8 --- /dev/null +++ b/Tests/A2/Je_4_ProtectedOverride_Abstract/Main.java @@ -0,0 +1,13 @@ +//JOOS1:HIERARCHY,PROTECTED_REPLACE_PUBLIC +//JOOS2:HIERARCHY,PROTECTED_REPLACE_PUBLIC +//JAVAC:UNKNOWN +public abstract class Main extends Foo { + public Main() {} + + // this overrides a public method from Foo + protected abstract void method(); + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/Je_4_ProtectedOverride_DifferentThrows/Foo.java b/Tests/A2/Je_4_ProtectedOverride_DifferentThrows/Foo.java new file mode 100644 index 0000000000000000000000000000000000000000..2a2a1f0fc688439dbb7ac7d5a6683cd29ba3e787 --- /dev/null +++ b/Tests/A2/Je_4_ProtectedOverride_DifferentThrows/Foo.java @@ -0,0 +1,5 @@ +public class Foo { + public Foo() {} + + public void method() throws java.io.IOException {} +} diff --git a/Tests/A2/Je_4_ProtectedOverride_DifferentThrows/Main.java b/Tests/A2/Je_4_ProtectedOverride_DifferentThrows/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..885b924cebbc51bba20f59d3cfac3ce585f68276 --- /dev/null +++ b/Tests/A2/Je_4_ProtectedOverride_DifferentThrows/Main.java @@ -0,0 +1,13 @@ +//JOOS1:HIERARCHY,PROTECTED_REPLACE_PUBLIC +//JOOS2:HIERARCHY,PROTECTED_REPLACE_PUBLIC +//JAVAC:UNKNOWN +public class Main extends Foo { + public Main() {} + + // this overrides a public method from Foo + protected void method() {} + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/Je_4_ProtectedOverride_Exception_Clone/Main.java b/Tests/A2/Je_4_ProtectedOverride_Exception_Clone/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..53a5a58f4f534d527d695f3d6484b8e67ace8008 --- /dev/null +++ b/Tests/A2/Je_4_ProtectedOverride_Exception_Clone/Main.java @@ -0,0 +1,21 @@ +// JOOS1:HIERARCHY,PROTECTED_REPLACE_PUBLIC +// JOOS2:HIERARCHY,PROTECTED_REPLACE_PUBLIC +// JAVAC:UNKNOWN +// +/** + * Hierarchy check: + * - A protected method must not override a public method (8.4.6.3, + * well-formedness constraint 7). (protected method clone() inherited + * from superclass java.lang.Object, but interface javax.naming.Name + * requires method clone() to be public). + */ +public abstract class Main + implements javax.naming.Name { + + public Main(){} + + public static int test() { + return 123; + } + +} diff --git a/Tests/A2/Je_4_ProtectedOverride_Exception_Clone/javax/naming/Name.java b/Tests/A2/Je_4_ProtectedOverride_Exception_Clone/javax/naming/Name.java new file mode 100644 index 0000000000000000000000000000000000000000..56c4cfe088c9efef0e568b4c860882bbe2052858 --- /dev/null +++ b/Tests/A2/Je_4_ProtectedOverride_Exception_Clone/javax/naming/Name.java @@ -0,0 +1,4 @@ +package javax.naming; +public interface Name { + public Object clone(); +} diff --git a/Tests/A2/Je_4_ProtectedOverride_FromInterface/Main.java b/Tests/A2/Je_4_ProtectedOverride_FromInterface/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..9f6acd5008961df7eda6a41f26e7451ace174122 --- /dev/null +++ b/Tests/A2/Je_4_ProtectedOverride_FromInterface/Main.java @@ -0,0 +1,22 @@ +// JOOS1:HIERARCHY,PROTECTED_REPLACE_PUBLIC +// JOOS2:HIERARCHY,PROTECTED_REPLACE_PUBLIC +// JAVAC:UNKNOWN +// +/** + * Hierarchy check: + * - A protected method must not override a public method (8.4.6.3, + * well-formedness constraint 7). + */ +public class Main implements Comparable { + + public Main() {} + + protected int compareTo(Object o) { + return 0; + } + + public static int test() { + return 123; + } + +} diff --git a/Tests/A2/Je_4_ProtectedOverride_FromInterface/java/lang/Comparable.java b/Tests/A2/Je_4_ProtectedOverride_FromInterface/java/lang/Comparable.java new file mode 100644 index 0000000000000000000000000000000000000000..3b4d1a9bc2c2268781be9257344534da360ffddf --- /dev/null +++ b/Tests/A2/Je_4_ProtectedOverride_FromInterface/java/lang/Comparable.java @@ -0,0 +1,5 @@ +package java.lang; + +public interface Comparable { + public int compareTo(Object o); +} diff --git a/Tests/A2/Je_4_ProtectedOverride_FromSuperclass/Main.java b/Tests/A2/Je_4_ProtectedOverride_FromSuperclass/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..a131bac5513940fdad34f121d0ac3127e552e677 --- /dev/null +++ b/Tests/A2/Je_4_ProtectedOverride_FromSuperclass/Main.java @@ -0,0 +1,19 @@ +// JOOS1:HIERARCHY,PROTECTED_REPLACE_PUBLIC +// JOOS2:HIERARCHY,PROTECTED_REPLACE_PUBLIC +// JAVAC:UNKNOWN +// +/** + * Hierarchy check: + * - A protected method must not override a public method (8.4.6.3, + * well-formedness constraint 7). + **/ +public class Main extends Thread{ + + public Main(){} + + protected void interrupt(){} + + public static int test(){ + return 123; + } +} diff --git a/Tests/A2/Je_4_ProtectedOverride_FromSuperclass/java/lang/Thread.java b/Tests/A2/Je_4_ProtectedOverride_FromSuperclass/java/lang/Thread.java new file mode 100644 index 0000000000000000000000000000000000000000..24930676d54fbb2fb9947e8ec552aebcb7da1f6d --- /dev/null +++ b/Tests/A2/Je_4_ProtectedOverride_FromSuperclass/java/lang/Thread.java @@ -0,0 +1,11 @@ +package java.lang; + +public class Thread { + public Thread() { + } + public void interrupt() { + } + public static int activeCount() { + return 1; + } +} diff --git a/Tests/A2/Je_4_ProtectedOverride_FromSuperclassAndInterface/Foo.java b/Tests/A2/Je_4_ProtectedOverride_FromSuperclassAndInterface/Foo.java new file mode 100644 index 0000000000000000000000000000000000000000..adf9f677059d61cd3e1150488ee8d1beb46ce53b --- /dev/null +++ b/Tests/A2/Je_4_ProtectedOverride_FromSuperclassAndInterface/Foo.java @@ -0,0 +1,9 @@ +public abstract class Foo{ + + public Foo(){} + + protected int compareTo(Object o){ + return 0; + } + +} diff --git a/Tests/A2/Je_4_ProtectedOverride_FromSuperclassAndInterface/Main.java b/Tests/A2/Je_4_ProtectedOverride_FromSuperclassAndInterface/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..431c2a43dbe37e0cc30cb363877d80e584e7c953 --- /dev/null +++ b/Tests/A2/Je_4_ProtectedOverride_FromSuperclassAndInterface/Main.java @@ -0,0 +1,18 @@ +// JOOS1:HIERARCHY,PROTECTED_REPLACE_PUBLIC +// JOOS2:HIERARCHY,PROTECTED_REPLACE_PUBLIC +// JAVAC:UNKNOWN +// +/** + * Hierarchy: + * - A protected method must not override a public method (8.4.6.3, + * well-formedness constraint 7). + */ +public abstract class Main extends Foo implements Comparable{ + + public Main(){} + + public static int test(){ + return 123; + } + +} diff --git a/Tests/A2/Je_4_ProtectedOverride_FromSuperclassAndInterface/java/lang/Comparable.java b/Tests/A2/Je_4_ProtectedOverride_FromSuperclassAndInterface/java/lang/Comparable.java new file mode 100644 index 0000000000000000000000000000000000000000..3b4d1a9bc2c2268781be9257344534da360ffddf --- /dev/null +++ b/Tests/A2/Je_4_ProtectedOverride_FromSuperclassAndInterface/java/lang/Comparable.java @@ -0,0 +1,5 @@ +package java.lang; + +public interface Comparable { + public int compareTo(Object o); +} diff --git a/Tests/A2/Je_4_ProtectedOverride_TwoVersionsFromSuperclass/B.java b/Tests/A2/Je_4_ProtectedOverride_TwoVersionsFromSuperclass/B.java new file mode 100644 index 0000000000000000000000000000000000000000..b087002f45ee7c90d78ecad87f5994bac956d28b --- /dev/null +++ b/Tests/A2/Je_4_ProtectedOverride_TwoVersionsFromSuperclass/B.java @@ -0,0 +1,7 @@ +public abstract class B{ + + public B() {} + + protected abstract void remove(); +} + diff --git a/Tests/A2/Je_4_ProtectedOverride_TwoVersionsFromSuperclass/C.java b/Tests/A2/Je_4_ProtectedOverride_TwoVersionsFromSuperclass/C.java new file mode 100644 index 0000000000000000000000000000000000000000..47b451a1cb28167c8ab5094e919b7d0e71d55c34 --- /dev/null +++ b/Tests/A2/Je_4_ProtectedOverride_TwoVersionsFromSuperclass/C.java @@ -0,0 +1,11 @@ +public abstract class C extends B implements java.util.Iterator { + public C() {} + + public boolean hasNext() { + return true; + } + + public Object next() { + return new Object(); + } +} diff --git a/Tests/A2/Je_4_ProtectedOverride_TwoVersionsFromSuperclass/Main.java b/Tests/A2/Je_4_ProtectedOverride_TwoVersionsFromSuperclass/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..443ec42a45e02c1ea67939d33d0dcf2e824be029 --- /dev/null +++ b/Tests/A2/Je_4_ProtectedOverride_TwoVersionsFromSuperclass/Main.java @@ -0,0 +1,22 @@ +// JOOS1:HIERARCHY,PROTECTED_REPLACE_PUBLIC +// JOOS2:HIERARCHY,PROTECTED_REPLACE_PUBLIC +// JAVAC:UNKNOWN +// +/** + * Hierarchy: + * - A protected method must not override a public method (8.4.6.3, + * well-formedness constraint 7). + */ +public class Main extends C{ + + public Main() {} + + protected void remove() { + System.out.println("not so good... actually wrong"); + } + + public static int test() { + return 123; + } + +} diff --git a/Tests/A2/Je_4_ProtectedOverride_TwoVersionsFromSuperclass/java/util/Iterator.java b/Tests/A2/Je_4_ProtectedOverride_TwoVersionsFromSuperclass/java/util/Iterator.java new file mode 100644 index 0000000000000000000000000000000000000000..b3ceee1bebc73fc62667a4dce70301dc8a6f9257 --- /dev/null +++ b/Tests/A2/Je_4_ProtectedOverride_TwoVersionsFromSuperclass/java/util/Iterator.java @@ -0,0 +1,6 @@ +package java.util; +public interface Iterator { + public void remove(); + public boolean hasNext(); + public Object next(); +} diff --git a/Tests/A2/Je_4_ReplaceInstance_FromSuperclass.java b/Tests/A2/Je_4_ReplaceInstance_FromSuperclass.java new file mode 100644 index 0000000000000000000000000000000000000000..752b1704bc9af30ec0e4b29d5d31fad15f066fcd --- /dev/null +++ b/Tests/A2/Je_4_ReplaceInstance_FromSuperclass.java @@ -0,0 +1,21 @@ +// JOOS1:HIERARCHY,STATIC_REPLACE_NONSTATIC +// JOOS2:HIERARCHY,STATIC_REPLACE_NONSTATIC +// JAVAC:UNKNOWN +// +/** + * Hierarchy: + * - A static method must not replace an instance method * (8.4.6.2, + * well-formedness constraint 5). + */ +public class Je_4_ReplaceInstance_FromSuperclass{ + + public Je_4_ReplaceInstance_FromSuperclass(){} + + public static int test(){ + return 123; + } + + public static boolean equals(Object o){ + return true; + } +} diff --git a/Tests/A2/Je_4_ReplaceStatic_FromSuperclass/Main.java b/Tests/A2/Je_4_ReplaceStatic_FromSuperclass/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..e1e770c3d24cab22d6f5c230b5b62eeb80275359 --- /dev/null +++ b/Tests/A2/Je_4_ReplaceStatic_FromSuperclass/Main.java @@ -0,0 +1,21 @@ +// JOOS1:HIERARCHY,NONSTATIC_REPLACE_STATIC +// JOOS2:HIERARCHY,NONSTATIC_REPLACE_STATIC +// JAVAC:UNKNOWN +// +/** + * Hierarchy check: + * - An instance method must not replace a static method (8.4.6.1, + * well-formedness constraint 5). +*/ +public class Main extends Thread { + + public Main(){} + + public static int test(){ + return 123; + } + + public int activeCount(){ + return 0; + } +} diff --git a/Tests/A2/Je_4_ReplaceStatic_FromSuperclass/java/lang/Thread.java b/Tests/A2/Je_4_ReplaceStatic_FromSuperclass/java/lang/Thread.java new file mode 100644 index 0000000000000000000000000000000000000000..24930676d54fbb2fb9947e8ec552aebcb7da1f6d --- /dev/null +++ b/Tests/A2/Je_4_ReplaceStatic_FromSuperclass/java/lang/Thread.java @@ -0,0 +1,11 @@ +package java.lang; + +public class Thread { + public Thread() { + } + public void interrupt() { + } + public static int activeCount() { + return 1; + } +} diff --git a/Tests/A2/Je_4_ReplaceStatic_FromSuperclass_DifferentReturnTypes/Main.java b/Tests/A2/Je_4_ReplaceStatic_FromSuperclass_DifferentReturnTypes/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..fd951eae36630150599245cf8835215e4b368171 --- /dev/null +++ b/Tests/A2/Je_4_ReplaceStatic_FromSuperclass_DifferentReturnTypes/Main.java @@ -0,0 +1,21 @@ +// JOOS1:HIERARCHY,DIFFERENT_RETURN_TYPE,NONSTATIC_REPLACE_STATIC +// JOOS2:HIERARCHY,DIFFERENT_RETURN_TYPE,NONSTATIC_REPLACE_STATIC +// JAVAC:UNKNOWN +// +/** + * Hierarchy check: + * - An instance method must not replace a static method (8.4.6.1, + * well-formedness constraint 5). +*/ +public class Main extends Thread{ + + public Main(){} + + public static int test(){ + return 123; + } + + public String activeCount(){ + return "0"; + } +} diff --git a/Tests/A2/Je_4_ReplaceStatic_FromSuperclass_DifferentReturnTypes/java/lang/Thread.java b/Tests/A2/Je_4_ReplaceStatic_FromSuperclass_DifferentReturnTypes/java/lang/Thread.java new file mode 100644 index 0000000000000000000000000000000000000000..24930676d54fbb2fb9947e8ec552aebcb7da1f6d --- /dev/null +++ b/Tests/A2/Je_4_ReplaceStatic_FromSuperclass_DifferentReturnTypes/java/lang/Thread.java @@ -0,0 +1,11 @@ +package java.lang; + +public class Thread { + public Thread() { + } + public void interrupt() { + } + public static int activeCount() { + return 1; + } +} diff --git a/Tests/A2/Je_4_Resolve_DefaultPackage/Main.java b/Tests/A2/Je_4_Resolve_DefaultPackage/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..25b2f87995e392377fdb9c5422d0fd6957d4a16e --- /dev/null +++ b/Tests/A2/Je_4_Resolve_DefaultPackage/Main.java @@ -0,0 +1,11 @@ +//JOOS1:TYPE_LINKING,PREFIX_RESOLVES_TO_TYPE +//JOOS2:TYPE_LINKING,PREFIX_RESOLVES_TO_TYPE +//JAVAC:UNKNOWN +public class Main { + public Main() {} + + public static int test() { + foo.bar fb = null; + return 123; + } +} diff --git a/Tests/A2/Je_4_Resolve_DefaultPackage/foo.java b/Tests/A2/Je_4_Resolve_DefaultPackage/foo.java new file mode 100644 index 0000000000000000000000000000000000000000..236dd1b51b0b286d643db814937a8839572cf784 --- /dev/null +++ b/Tests/A2/Je_4_Resolve_DefaultPackage/foo.java @@ -0,0 +1,3 @@ +public class foo { + public foo() {} +} diff --git a/Tests/A2/Je_4_Resolve_DefaultPackage/foo/bar.java b/Tests/A2/Je_4_Resolve_DefaultPackage/foo/bar.java new file mode 100644 index 0000000000000000000000000000000000000000..1e01f62f7cd0bc71a82ae06cf24aea29521baac5 --- /dev/null +++ b/Tests/A2/Je_4_Resolve_DefaultPackage/foo/bar.java @@ -0,0 +1,5 @@ +package foo; + +public class bar { + public bar() {} +} diff --git a/Tests/A2/Je_4_SelfDependency_CircularExtends_1/Main.java b/Tests/A2/Je_4_SelfDependency_CircularExtends_1/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..0274f0b3e4a0359dca7a31eb775a4f2be6388a48 --- /dev/null +++ b/Tests/A2/Je_4_SelfDependency_CircularExtends_1/Main.java @@ -0,0 +1,17 @@ +// JOOS1:HIERARCHY,CIRCULAR_INHERITANCE +// JOOS2:HIERARCHY,CIRCULAR_INHERITANCE +// JAVAC:UNKNOWN +// +/** + * Hierarchy: + * - A class must not depend on itself + */ +public class Main extends foo { + + public Main () {} + + public static int test() { + return 123; + } + +} diff --git a/Tests/A2/Je_4_SelfDependency_CircularExtends_1/bar.java b/Tests/A2/Je_4_SelfDependency_CircularExtends_1/bar.java new file mode 100644 index 0000000000000000000000000000000000000000..77f85d9dd8c56c4281967c4ef0bd61abca2c09bb --- /dev/null +++ b/Tests/A2/Je_4_SelfDependency_CircularExtends_1/bar.java @@ -0,0 +1,5 @@ +public class bar extends baz { + + public bar () {} + +} diff --git a/Tests/A2/Je_4_SelfDependency_CircularExtends_1/baz.java b/Tests/A2/Je_4_SelfDependency_CircularExtends_1/baz.java new file mode 100644 index 0000000000000000000000000000000000000000..7798c958d4678beb8e5f5e94895f8cd62ba5aa87 --- /dev/null +++ b/Tests/A2/Je_4_SelfDependency_CircularExtends_1/baz.java @@ -0,0 +1,5 @@ +public class baz extends boz { + + public baz () {} + +} diff --git a/Tests/A2/Je_4_SelfDependency_CircularExtends_1/boz.java b/Tests/A2/Je_4_SelfDependency_CircularExtends_1/boz.java new file mode 100644 index 0000000000000000000000000000000000000000..10efb3374cd3d14d68d055dc8947ea3097c0e3be --- /dev/null +++ b/Tests/A2/Je_4_SelfDependency_CircularExtends_1/boz.java @@ -0,0 +1,5 @@ +public class boz extends Main { + + public boz () {} + +} diff --git a/Tests/A2/Je_4_SelfDependency_CircularExtends_1/foo.java b/Tests/A2/Je_4_SelfDependency_CircularExtends_1/foo.java new file mode 100644 index 0000000000000000000000000000000000000000..33f2a92d477b5ab444d39039b7cbdffacae277ac --- /dev/null +++ b/Tests/A2/Je_4_SelfDependency_CircularExtends_1/foo.java @@ -0,0 +1,5 @@ +public class foo extends bar { + + public foo () {} + +} diff --git a/Tests/A2/Je_4_SelfDependency_CircularExtends_2/Main.java b/Tests/A2/Je_4_SelfDependency_CircularExtends_2/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..22b49ff9cacc8a3e58cb63214429a68a6090ebce --- /dev/null +++ b/Tests/A2/Je_4_SelfDependency_CircularExtends_2/Main.java @@ -0,0 +1,17 @@ +// JOOS1:HIERARCHY,CIRCULAR_INHERITANCE +// JOOS2:HIERARCHY,CIRCULAR_INHERITANCE +// JAVAC:UNKNOWN +// +/** + * Hierarchy: + * - A class must not depend on itself + */ +public class Main { + + public Main () {} + + public static int test() { + return 123; + } + +} diff --git a/Tests/A2/Je_4_SelfDependency_CircularExtends_2/bar.java b/Tests/A2/Je_4_SelfDependency_CircularExtends_2/bar.java new file mode 100644 index 0000000000000000000000000000000000000000..77f85d9dd8c56c4281967c4ef0bd61abca2c09bb --- /dev/null +++ b/Tests/A2/Je_4_SelfDependency_CircularExtends_2/bar.java @@ -0,0 +1,5 @@ +public class bar extends baz { + + public bar () {} + +} diff --git a/Tests/A2/Je_4_SelfDependency_CircularExtends_2/baz.java b/Tests/A2/Je_4_SelfDependency_CircularExtends_2/baz.java new file mode 100644 index 0000000000000000000000000000000000000000..3ebc6c02ea1423f043a1a413bf9c85b3c1897646 --- /dev/null +++ b/Tests/A2/Je_4_SelfDependency_CircularExtends_2/baz.java @@ -0,0 +1,9 @@ +public class baz extends boz { + + public baz () {} + + public int result() { + return 123; + } + +} diff --git a/Tests/A2/Je_4_SelfDependency_CircularExtends_2/boz.java b/Tests/A2/Je_4_SelfDependency_CircularExtends_2/boz.java new file mode 100644 index 0000000000000000000000000000000000000000..96b2006aad147a80236843fd960e0efc999f7d79 --- /dev/null +++ b/Tests/A2/Je_4_SelfDependency_CircularExtends_2/boz.java @@ -0,0 +1,5 @@ +public class boz extends foo { + + public boz () {} + +} diff --git a/Tests/A2/Je_4_SelfDependency_CircularExtends_2/foo.java b/Tests/A2/Je_4_SelfDependency_CircularExtends_2/foo.java new file mode 100644 index 0000000000000000000000000000000000000000..33f2a92d477b5ab444d39039b7cbdffacae277ac --- /dev/null +++ b/Tests/A2/Je_4_SelfDependency_CircularExtends_2/foo.java @@ -0,0 +1,5 @@ +public class foo extends bar { + + public foo () {} + +} diff --git a/Tests/A2/Je_4_SelfDependency_ExtendsItself.java b/Tests/A2/Je_4_SelfDependency_ExtendsItself.java new file mode 100644 index 0000000000000000000000000000000000000000..12b09aff846afefe791f3ba4d6cfde049a104b62 --- /dev/null +++ b/Tests/A2/Je_4_SelfDependency_ExtendsItself.java @@ -0,0 +1,17 @@ +// JOOS1:HIERARCHY,CIRCULAR_INHERITANCE +// JOOS2:HIERARCHY,CIRCULAR_INHERITANCE +// JAVAC:UNKNOWN +// +/** + * Hierarchy check: + * - A class or interface must not depend on itself (8.1.3, 9.1.2). + * (must not extend itself) + */ +public class Je_4_SelfDependency_ExtendsItself extends Je_4_SelfDependency_ExtendsItself { + + public Je_4_SelfDependency_ExtendsItself() {} + + public static int test() { + return 123; + } +} diff --git a/Tests/A2/Je_5_Interface_ImplicitReplace_DifferentReturnType.java b/Tests/A2/Je_5_Interface_ImplicitReplace_DifferentReturnType.java new file mode 100644 index 0000000000000000000000000000000000000000..0ce5c48891cf3a8f4aff195af527b45bf2b8b3aa --- /dev/null +++ b/Tests/A2/Je_5_Interface_ImplicitReplace_DifferentReturnType.java @@ -0,0 +1,8 @@ +//HIERARCHY +//JOOS1:PARSER_WEEDER,JOOS1_INTERFACE,PARSER_EXCEPTION +//JOOS2:DIFFERENT_RETURN_TYPE +//JAVAC:UNKNOWN + +public interface Je_5_Interface_ImplicitReplace_DifferentReturnType { + public int toString(); +}