test/tools/javac/resolve/ResolveHarness.java

changeset 1779
97a9b4b3e63a
parent 1466
b52a38d4536c
child 1875
f559ef7568ce
     1.1 --- a/test/tools/javac/resolve/ResolveHarness.java	Fri May 24 15:26:57 2013 +0100
     1.2 +++ b/test/tools/javac/resolve/ResolveHarness.java	Fri May 24 15:27:12 2013 +0100
     1.3 @@ -43,6 +43,7 @@
     1.4  import java.util.HashMap;
     1.5  import java.util.HashSet;
     1.6  import java.util.List;
     1.7 +import java.util.Locale;
     1.8  import java.util.Map;
     1.9  
    1.10  import javax.annotation.processing.AbstractProcessor;
    1.11 @@ -85,6 +86,7 @@
    1.12      Set<String> declaredKeys = new HashSet<>();
    1.13      List<Diagnostic<? extends JavaFileObject>> diags = new ArrayList<>();
    1.14      List<ElementKey> seenCandidates = new ArrayList<>();
    1.15 +    Map<String, String> predefTranslationMap = new HashMap<>();
    1.16  
    1.17      protected ResolveHarness(JavaFileObject jfo) {
    1.18          this.jfo = jfo;
    1.19 @@ -93,12 +95,36 @@
    1.20              new VerboseDeferredInferenceNoteProcessor(),
    1.21              new ErrorProcessor()
    1.22          };
    1.23 +        predefTranslationMap.put("+", "_plus");
    1.24 +        predefTranslationMap.put("-", "_minus");
    1.25 +        predefTranslationMap.put("~", "_not");
    1.26 +        predefTranslationMap.put("++", "_plusplus");
    1.27 +        predefTranslationMap.put("--", "_minusminus");
    1.28 +        predefTranslationMap.put("!", "_bang");
    1.29 +        predefTranslationMap.put("*", "_mul");
    1.30 +        predefTranslationMap.put("/", "_div");
    1.31 +        predefTranslationMap.put("%", "_mod");
    1.32 +        predefTranslationMap.put("&", "_and");
    1.33 +        predefTranslationMap.put("|", "_or");
    1.34 +        predefTranslationMap.put("^", "_xor");
    1.35 +        predefTranslationMap.put("<<", "_lshift");
    1.36 +        predefTranslationMap.put(">>", "_rshift");
    1.37 +        predefTranslationMap.put("<<<", "_lshiftshift");
    1.38 +        predefTranslationMap.put(">>>", "_rshiftshift");
    1.39 +        predefTranslationMap.put("<", "_lt");
    1.40 +        predefTranslationMap.put(">", "_gt");
    1.41 +        predefTranslationMap.put("<=", "_lteq");
    1.42 +        predefTranslationMap.put(">=", "_gteq");
    1.43 +        predefTranslationMap.put("==", "_eq");
    1.44 +        predefTranslationMap.put("!=", "_neq");
    1.45 +        predefTranslationMap.put("&&", "_andand");
    1.46 +        predefTranslationMap.put("||", "_oror");
    1.47      }
    1.48  
    1.49      protected void check() throws Exception {
    1.50          String[] options = {
    1.51              "-XDshouldStopPolicy=ATTR",
    1.52 -            "-XDverboseResolution=success,failure,applicable,inapplicable,deferred-inference"
    1.53 +            "-XDverboseResolution=success,failure,applicable,inapplicable,deferred-inference,predef"
    1.54          };
    1.55  
    1.56          AbstractProcessor[] processors = { new ResolveCandidateFinder(), null };
    1.57 @@ -223,7 +249,8 @@
    1.58          @Override
    1.59          void process(Diagnostic<? extends JavaFileObject> diagnostic) {
    1.60              Element siteSym = getSiteSym(diagnostic);
    1.61 -            if (siteSym.getAnnotation(TraceResolve.class) == null) {
    1.62 +            if (siteSym.getSimpleName().length() != 0 &&
    1.63 +                    siteSym.getAnnotation(TraceResolve.class) == null) {
    1.64                  return;
    1.65              }
    1.66              int candidateIdx = 0;
    1.67 @@ -307,7 +334,7 @@
    1.68  
    1.69              if (Arrays.asList(c.applicable()).contains(phase)) { //applicable
    1.70                  if (c.mostSpecific() != mostSpecific) {
    1.71 -                    error("Invalid most specific value for method " + methodSym);
    1.72 +                    error("Invalid most specific value for method " + methodSym + " " + new ElementKey(methodSym).key);
    1.73                  }
    1.74                  MethodType mtype = getSig(diagnostic);
    1.75                  if (mtype != null) {
    1.76 @@ -444,11 +471,21 @@
    1.77  
    1.78          String computeKey(Element e) {
    1.79              StringBuilder buf = new StringBuilder();
    1.80 -            while (e != null) {
    1.81 +            if (predefTranslationMap.containsKey(e.getSimpleName().toString())) {
    1.82 +                //predef element
    1.83 +                buf.append("<predef>.");
    1.84 +                String replacedName = predefTranslationMap.get(e.getSimpleName().toString());
    1.85 +                buf.append(e.toString().replace(e.getSimpleName().toString(), replacedName));
    1.86 +            } else if (e.getSimpleName().toString().startsWith("_")) {
    1.87 +                buf.append("<predef>.");
    1.88                  buf.append(e.toString());
    1.89 -                e = e.getEnclosingElement();
    1.90 +            } else {
    1.91 +                while (e != null) {
    1.92 +                    buf.append(e.toString());
    1.93 +                    e = e.getEnclosingElement();
    1.94 +                }
    1.95 +                buf.append(jfo.getName());
    1.96              }
    1.97 -            buf.append(jfo.getName());
    1.98              return buf.toString();
    1.99          }
   1.100  

mercurial