247 } else { |
247 } else { |
248 ownerTypeAnnos.append(tc); |
248 ownerTypeAnnos.append(tc); |
249 } |
249 } |
250 } |
250 } |
251 if (lambdaTypeAnnos.nonEmpty()) { |
251 if (lambdaTypeAnnos.nonEmpty()) { |
252 owner.annotations.setTypeAttributes(ownerTypeAnnos.toList()); |
252 owner.setTypeAttributes(ownerTypeAnnos.toList()); |
253 sym.annotations.setTypeAttributes(lambdaTypeAnnos.toList()); |
253 sym.setTypeAttributes(lambdaTypeAnnos.toList()); |
254 } |
254 } |
255 } |
255 } |
256 |
256 |
257 //create the method declaration hoisting the lambda body |
257 //create the method declaration hoisting the lambda body |
258 JCMethodDecl lambdaDecl = make.MethodDef(make.Modifiers(sym.flags_field), |
258 JCMethodDecl lambdaDecl = make.MethodDef(make.Modifiers(sym.flags_field), |
387 } else { |
387 } else { |
388 LambdaTranslationContext lambdaContext = (LambdaTranslationContext) context; |
388 LambdaTranslationContext lambdaContext = (LambdaTranslationContext) context; |
389 if (lambdaContext.getSymbolMap(PARAM).containsKey(tree.sym)) { |
389 if (lambdaContext.getSymbolMap(PARAM).containsKey(tree.sym)) { |
390 Symbol translatedSym = lambdaContext.getSymbolMap(PARAM).get(tree.sym); |
390 Symbol translatedSym = lambdaContext.getSymbolMap(PARAM).get(tree.sym); |
391 result = make.Ident(translatedSym).setType(tree.type); |
391 result = make.Ident(translatedSym).setType(tree.type); |
392 translatedSym.annotations.setTypeAttributes(tree.sym.getRawTypeAttributes()); |
392 translatedSym.setTypeAttributes(tree.sym.getRawTypeAttributes()); |
393 } else if (lambdaContext.getSymbolMap(LOCAL_VAR).containsKey(tree.sym)) { |
393 } else if (lambdaContext.getSymbolMap(LOCAL_VAR).containsKey(tree.sym)) { |
394 Symbol translatedSym = lambdaContext.getSymbolMap(LOCAL_VAR).get(tree.sym); |
394 Symbol translatedSym = lambdaContext.getSymbolMap(LOCAL_VAR).get(tree.sym); |
395 result = make.Ident(translatedSym).setType(tree.type); |
395 result = make.Ident(translatedSym).setType(tree.type); |
396 translatedSym.annotations.setTypeAttributes(tree.sym.getRawTypeAttributes()); |
396 translatedSym.setTypeAttributes(tree.sym.getRawTypeAttributes()); |
397 } else if (lambdaContext.getSymbolMap(TYPE_VAR).containsKey(tree.sym)) { |
397 } else if (lambdaContext.getSymbolMap(TYPE_VAR).containsKey(tree.sym)) { |
398 Symbol translatedSym = lambdaContext.getSymbolMap(TYPE_VAR).get(tree.sym); |
398 Symbol translatedSym = lambdaContext.getSymbolMap(TYPE_VAR).get(tree.sym); |
399 result = make.Ident(translatedSym).setType(translatedSym.type); |
399 result = make.Ident(translatedSym).setType(translatedSym.type); |
400 translatedSym.annotations.setTypeAttributes(tree.sym.getRawTypeAttributes()); |
400 translatedSym.setTypeAttributes(tree.sym.getRawTypeAttributes()); |
401 } else if (lambdaContext.getSymbolMap(CAPTURED_VAR).containsKey(tree.sym)) { |
401 } else if (lambdaContext.getSymbolMap(CAPTURED_VAR).containsKey(tree.sym)) { |
402 Symbol translatedSym = lambdaContext.getSymbolMap(CAPTURED_VAR).get(tree.sym); |
402 Symbol translatedSym = lambdaContext.getSymbolMap(CAPTURED_VAR).get(tree.sym); |
403 result = make.Ident(translatedSym).setType(tree.type); |
403 result = make.Ident(translatedSym).setType(tree.type); |
404 } else { |
404 } else { |
405 //access to untranslated symbols (i.e. compile-time constants, |
405 //access to untranslated symbols (i.e. compile-time constants, |
1713 break; |
1713 break; |
1714 default: |
1714 default: |
1715 ret = makeSyntheticVar(FINAL, name, types.erasure(sym.type), translatedSym); |
1715 ret = makeSyntheticVar(FINAL, name, types.erasure(sym.type), translatedSym); |
1716 } |
1716 } |
1717 if (ret != sym) { |
1717 if (ret != sym) { |
1718 ret.annotations.setDeclarationAttributes(sym.getRawAttributes()); |
1718 ret.setDeclarationAttributes(sym.getRawAttributes()); |
1719 ret.annotations.setTypeAttributes(sym.getRawTypeAttributes()); |
1719 ret.setTypeAttributes(sym.getRawTypeAttributes()); |
1720 } |
1720 } |
1721 return ret; |
1721 return ret; |
1722 } |
1722 } |
1723 |
1723 |
1724 void addSymbol(Symbol sym, LambdaSymbolKind skind) { |
1724 void addSymbol(Symbol sym, LambdaSymbolKind skind) { |