@@ -2500,7 +2500,7 @@ private static boolean isObjectOrNull(ITypeBinding type) {
25002500 */
25012501 class TrailingBuffer {
25022502
2503- private StringBuffer buf ;
2503+ StringBuffer buf ;
25042504 private String added = "" ;
25052505
25062506 boolean hasAssert ;
@@ -4308,7 +4308,7 @@ private String getMyJavaClassNameLambda(boolean andIncrement) {
43084308 + (andIncrement ? ++lambdaCount : lambdaCount );
43094309 }
43104310
4311- private static String stripJavaLang (String name ) {
4311+ static String stripJavaLang (String name ) {
43124312 // shorten java.lang.XXX.YYY but not java.lang.xxx.YYY
43134313 return (!name .startsWith ("java.lang." ) || name .equals ("java.lang.Object" )
43144314 || name .length () > 10 && !Character .isUpperCase (name .charAt (10 )) ? name : name .substring (10 ));
@@ -5065,7 +5065,7 @@ private static String j2sGetParamCode(ITypeBinding binding, boolean addAAA, bool
50655065 * @param qName
50665066 * @return
50675067 */
5068- private static String removeBracketsAndFixNullPackageName (String qName ) {
5068+ static String removeBracketsAndFixNullPackageName (String qName ) {
50695069 if (qName == null )
50705070 return null ;
50715071 qName = NameMapper .fixPackageName (qName );
@@ -6138,64 +6138,62 @@ protected ClassAnnotation(String qName, Annotation annotation, BodyDeclaration n
61386138 public static void addClassAnnotations (List <ClassAnnotation > class_annotations , TrailingBuffer trailingBuffer ) {
61396139 if (class_annotations == null )
61406140 return ;
6141- int pt = 0 ;
6141+ int pt = 0 , ptBuf = 0 ;
61426142 ASTNode lastNode = null ;
6143+ List <?> fragments = null ;
61436144 for (int i = 0 ; i < class_annotations .size (); i ++) {
61446145 ClassAnnotation a = class_annotations .get (i );
61456146 String str = a .annotation .toString ();
61466147 if (str .startsWith ("@SuppressWarnings" ))
61476148 continue ;
6148- // if (str.indexOf(".class") >= 0) {
6149- // System.out.println(str + " >>" + a.annotation.getClass().getName());
6150- // if (a.annotation instanceof SingleMemberAnnotation) {
6151- // SingleMemberAnnotation ann = (SingleMemberAnnotation) a.annotation;
6152- // Expression e = ann.getValue();
6153- // System.out.println(e + " >>" + e.getClass().getName());
6154- // str += e.getClass().getName();
6155- // if (e instanceof TypeLiteral)
6156- // str += "==" + ((TypeLiteral) e).getType().resolveBinding().getClass().getName();
6157- // } else if (a.annotation instanceof NormalAnnotation) {
6158- // NormalAnnotation an = (NormalAnnotation) a.annotation;
6159- // str += "====" + an.resolveAnnotationBinding().getAllMemberValuePairs()[0].getValue();
6160- // }
6161- // }
6162- String nodeType = a .qName ;
6163- String varName = null ;
6164- String className = null , binaryName = null ;
6165- if (a .node instanceof FieldDeclaration ) {
6166- FieldDeclaration field = (FieldDeclaration ) a .node ;
6167- List <?> fragments = field .fragments ();
6168- VariableDeclarationFragment identifier = (VariableDeclarationFragment ) fragments .get (0 );
6169- IVariableBinding var = identifier .resolveBinding ();
6170- className = getJavaClassNameQualified (var .getType ());
6171- binaryName = var .getType ().getBinaryName ();
6172- nodeType = (var .getType ().isArray () ? "[array]" : field .getType ().toString ());
6173- var .getType ().getQualifiedName ();
6174- varName = var .getName ();
6175- } else if (a .node instanceof MethodDeclaration ) {
6176- MethodDeclaration method = (MethodDeclaration ) a .node ;
6177- IMethodBinding var = method .resolveBinding ();
6178- ITypeBinding type = var .getReturnType ();
6179- className = getJavaClassNameQualified (type );
6180- binaryName = type .getBinaryName ();
6181- nodeType = (type .isArray () ? "[array]" : type .getName ());
6182- varName = "M:" + var .getName ();
6183- }
61846149 if (a .node == lastNode ) {
61856150 trailingBuffer .append ("," );
61866151 } else {
61876152 lastNode = a .node ;
6153+ String varName = null ;
6154+ ITypeBinding type = null ;
6155+ // time to pick up the fragments
6156+ addTrailingFragments (fragments , trailingBuffer , ptBuf );
6157+ fragments = null ;
6158+ if (a .node instanceof FieldDeclaration ) {
6159+ FieldDeclaration field = (FieldDeclaration ) a .node ;
6160+ fragments = field .fragments ();
6161+ VariableDeclarationFragment identifier = (VariableDeclarationFragment ) fragments .get (0 );
6162+ IVariableBinding var = identifier .resolveBinding ();
6163+ varName = var .getName ();
6164+ type = var .getType ();
6165+ } else if (a .node instanceof MethodDeclaration ) {
6166+ MethodDeclaration method = (MethodDeclaration ) a .node ;
6167+ IMethodBinding var = method .resolveBinding ();
6168+ varName = "M:" + var .getName ();
6169+ type = var .getReturnType ();
6170+ }
6171+ String className = (type == null ? null
6172+ : stripJavaLang (NameMapper .checkClassReplacement (
6173+ removeBracketsAndFixNullPackageName (getJavaClassNameQualified (type )))));
61886174 trailingBuffer .append (pt ++ == 0 ? "C$.__ANN__ = [[[" : "]],\n [[" );
6189- trailingBuffer .append ((varName == null ? null : "'" + varName + "'" )
6190- + ",'" + nodeType + "'"
6191- + ",'" + className + "'"
6192- + ",'" + binaryName + "'],[" );
6193- }
6175+ trailingBuffer .append ((varName == null ? null : "'" + varName + "'" ));
6176+ ptBuf = trailingBuffer .buf .length ();
6177+ trailingBuffer .append (",'" + className + "'],[" );
6178+ }
61946179 trailingBuffer .append ("'" + str + "'" );
61956180 }
6181+ addTrailingFragments (fragments , trailingBuffer , ptBuf );
61966182 if (pt > 0 )
61976183 trailingBuffer .append ("]]];\n " );
61986184 }
6185+
6186+ private static void addTrailingFragments (List <?> fragments , TrailingBuffer trailingBuffer , int ptBuf ) {
6187+ if (fragments == null || fragments .size () == 0 )
6188+ return ;
6189+ String line = trailingBuffer .buf .substring (ptBuf );
6190+ for (int f = 1 ; f < fragments .size (); f ++) {
6191+ VariableDeclarationFragment identifier = (VariableDeclarationFragment ) fragments .get (f );
6192+ IVariableBinding var = identifier .resolveBinding ();
6193+ trailingBuffer .append ("]],\n [['" + var .getName () + "'" );
6194+ trailingBuffer .append (line );
6195+ }
6196+ }
61996197
62006198 }
62016199
0 commit comments