src/share/classes/com/sun/tools/javac/comp/Check.java

changeset 1366
12cf6bfd8c05
parent 1358
fc123bdeddb8
child 1374
c002fdee76fd
     1.1 --- a/src/share/classes/com/sun/tools/javac/comp/Check.java	Tue Oct 16 21:03:36 2012 -0700
     1.2 +++ b/src/share/classes/com/sun/tools/javac/comp/Check.java	Wed Oct 17 16:43:26 2012 +0100
     1.3 @@ -1121,8 +1121,14 @@
     1.4                      mask = PRIVATE;
     1.5                  } else
     1.6                      mask = ConstructorFlags;
     1.7 -            }  else if ((sym.owner.flags_field & INTERFACE) != 0)
     1.8 -                mask = implicit = InterfaceMethodFlags;
     1.9 +            }  else if ((sym.owner.flags_field & INTERFACE) != 0) {
    1.10 +                if ((flags & DEFAULT) != 0) {
    1.11 +                    mask = InterfaceDefaultMethodMask;
    1.12 +                    implicit = PUBLIC;
    1.13 +                } else {
    1.14 +                    mask = implicit = InterfaceMethodFlags;
    1.15 +                }
    1.16 +            }
    1.17              else {
    1.18                  mask = MethodFlags;
    1.19              }
    1.20 @@ -1169,7 +1175,7 @@
    1.21          default:
    1.22              throw new AssertionError();
    1.23          }
    1.24 -        long illegal = flags & StandardFlags & ~mask;
    1.25 +        long illegal = flags & ExtendedStandardFlags & ~mask;
    1.26          if (illegal != 0) {
    1.27              if ((illegal & INTERFACE) != 0) {
    1.28                  log.error(pos, "intf.not.allowed.here");
    1.29 @@ -1185,7 +1191,7 @@
    1.30                    // in the presence of inner classes. Should it be deleted here?
    1.31                    checkDisjoint(pos, flags,
    1.32                                  ABSTRACT,
    1.33 -                                PRIVATE | STATIC))
    1.34 +                                PRIVATE | STATIC | DEFAULT))
    1.35                   &&
    1.36                   checkDisjoint(pos, flags,
    1.37                                 ABSTRACT | INTERFACE,
    1.38 @@ -1209,7 +1215,7 @@
    1.39                                  STRICTFP))) {
    1.40              // skip
    1.41          }
    1.42 -        return flags & (mask | ~StandardFlags) | implicit;
    1.43 +        return flags & (mask | ~ExtendedStandardFlags) | implicit;
    1.44      }
    1.45  
    1.46  

mercurial