test/tools/javac/defaultMethods/syntax/TestDefaultMethodsSyntax.java

changeset 1513
cf84b07a82db
parent 1512
b12ffdfa1341
child 2227
998b10c43157
     1.1 --- a/test/tools/javac/defaultMethods/syntax/TestDefaultMethodsSyntax.java	Mon Jan 21 20:15:16 2013 +0000
     1.2 +++ b/test/tools/javac/defaultMethods/syntax/TestDefaultMethodsSyntax.java	Mon Jan 21 20:19:53 2013 +0000
     1.3 @@ -23,7 +23,7 @@
     1.4  
     1.5  /*
     1.6   * @test
     1.7 - * @bug 7192245 8005851
     1.8 + * @bug 7192245 8005851 8005166
     1.9   * @summary Automatic test for checking set of allowed modifiers on interface methods
    1.10   */
    1.11  
    1.12 @@ -54,7 +54,7 @@
    1.13          }
    1.14  
    1.15          List<String> getOptions() {
    1.16 -            return Arrays.asList("-source", versionString);
    1.17 +            return Arrays.asList("-XDallowStaticInterfaceMethods", "-source", versionString);
    1.18          }
    1.19      }
    1.20  
    1.21 @@ -77,32 +77,6 @@
    1.22              this.modStr = modStr;
    1.23          }
    1.24  
    1.25 -        boolean isAllowed(EnclosingKind ek, ModifierKind otherMod) {
    1.26 -            if (this == otherMod) return false;
    1.27 -            switch (this) {
    1.28 -                case NONE:
    1.29 -                    return true;
    1.30 -                case ABSTRACT:
    1.31 -                    return otherMod != PRIVATE;
    1.32 -                case NATIVE:
    1.33 -                    return otherMod != ABSTRACT &&
    1.34 -                            otherMod != STRICTFP;
    1.35 -                case FINAL:
    1.36 -                case STATIC:
    1.37 -                case SYNCHRONIZED:
    1.38 -                case STRICTFP:
    1.39 -                     return otherMod != ABSTRACT;
    1.40 -                case PUBLIC:
    1.41 -                    return true;
    1.42 -                case PROTECTED:
    1.43 -                    return ek == EnclosingKind.ABSTRACT_CLASS;
    1.44 -                case DEFAULT:
    1.45 -                    return otherMod != ABSTRACT;
    1.46 -                default:
    1.47 -                    return true;
    1.48 -            }
    1.49 -        }
    1.50 -
    1.51          static boolean intersect(ModifierKind mk, ModifierKind... mks) {
    1.52              for (ModifierKind mk2 : mks) {
    1.53                  if (mk == mk2) return true;
    1.54 @@ -113,7 +87,7 @@
    1.55          static boolean compatible(MethodKind mk, ModifierKind mod1, ModifierKind mod2, EnclosingKind ek) {
    1.56              if (intersect(ABSTRACT, mod1, mod2) || intersect(NATIVE, mod1, mod2)) {
    1.57                  return mk == MethodKind.NO_BODY;
    1.58 -            } else if (intersect(DEFAULT, mod1, mod2)) {
    1.59 +            } else if (intersect(DEFAULT, mod1, mod2) || intersect(STATIC, mod1, mod2)) {
    1.60                  return mk == MethodKind.BODY;
    1.61              } else {
    1.62                  return ek == EnclosingKind.INTERFACE ?
    1.63 @@ -123,7 +97,6 @@
    1.64  
    1.65          boolean compatible(EnclosingKind ek) {
    1.66              switch (this) {
    1.67 -                case STATIC:
    1.68                  case PRIVATE:
    1.69                  case PROTECTED:
    1.70                      return ek != EnclosingKind.INTERFACE;
    1.71 @@ -176,16 +149,16 @@
    1.72  
    1.73          static Result[][] allowedModifierPairs = {
    1.74              /*                     NONE  PUBLIC  PROTECTED  PRIVATE  ABSTRACT  STATIC  NATIVE  SYNCHRONIZED  FINAL  STRICTFP  DEFAULT */
    1.75 -            /* NONE */           { T   , T    , C        , C       , T       , C     , C     , C           , C    , C       , I   },
    1.76 -            /* PUBLIC */         { T   , F    , F        , F       , T       , C     , C     , C           , C    , C       , I   },
    1.77 +            /* NONE */           { T   , T    , C        , C       , T       , T     , C     , C           , C    , C       , I   },
    1.78 +            /* PUBLIC */         { T   , F    , F        , F       , T       , T     , C     , C           , C    , C       , I   },
    1.79              /* PROTECTED */      { C   , F    , F        , F       , C       , C     , C     , C           , C    , C       , F   },
    1.80              /* PRIVATE */        { C   , F    , F        , F       , F       , C     , C     , C           , C    , C       , F   },
    1.81              /* ABSTRACT */       { T   , T    , C        , F       , F       , F     , F     , F           , F    , F       , F   },
    1.82 -            /* STATIC */         { C   , C    , C        , C       , F       , F     , C     , C           , C    , C       , F   },
    1.83 +            /* STATIC */         { T   , T    , C        , C       , F       , F     , C     , C           , C    , T       , F   },
    1.84              /* NATIVE */         { C   , C    , C        , C       , F       , C     , F     , C           , C    , F       , F   },
    1.85              /* SYNCHRONIZED */   { C   , C    , C        , C       , F       , C     , C     , F           , C    , C       , F   },
    1.86              /* FINAL */          { C   , C    , C        , C       , F       , C     , C     , C           , F    , C       , F   },
    1.87 -            /* STRICTFP */       { C   , C    , C        , C       , F       , C     , F     , C           , C    , F       , I   },
    1.88 +            /* STRICTFP */       { C   , C    , C        , C       , F       , T     , F     , C           , C    , F       , I   },
    1.89              /* DEFAULT */        { I   , I    , F        , F       , F       , F     , F     , F           , F    , I       , F   }};
    1.90      }
    1.91  
    1.92 @@ -291,6 +264,9 @@
    1.93          errorExpected |= ModifierKind.intersect(ModifierKind.DEFAULT, modk1, modk2) &&
    1.94                  vk == VersionKind.PRE_LAMBDA;
    1.95  
    1.96 +        errorExpected |= ModifierKind.intersect(ModifierKind.STATIC, modk1, modk2) &&
    1.97 +                ek == EnclosingKind.INTERFACE && vk == VersionKind.PRE_LAMBDA;
    1.98 +
    1.99          checkCount++;
   1.100          if (diagChecker.errorFound != errorExpected) {
   1.101              throw new AssertionError("Problem when compiling source:\n" + source.getCharContent(true) +

mercurial