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