|
Lines 14-19
Link Here
|
| 14 |
* Jesper S Moller - Contributions for |
14 |
* Jesper S Moller - Contributions for |
| 15 |
* bug 382701 - [1.8][compiler] Implement semantic analysis of Lambda expressions & Reference expression |
15 |
* bug 382701 - [1.8][compiler] Implement semantic analysis of Lambda expressions & Reference expression |
| 16 |
* Bug 384687 - [1.8] Wildcard type arguments should be rejected for lambda and reference expressions |
16 |
* Bug 384687 - [1.8] Wildcard type arguments should be rejected for lambda and reference expressions |
|
|
17 |
* Bug 416885 - [1.8][compiler]IncompatibleClassChange error (edit) |
| 17 |
* Stephan Herrmann - Contribution for |
18 |
* Stephan Herrmann - Contribution for |
| 18 |
* bug 402028 - [1.8][compiler] null analysis for reference expressions |
19 |
* bug 402028 - [1.8][compiler] null analysis for reference expressions |
| 19 |
* bug 404649 - [1.8][compiler] detect illegal reference to indirect or redundant super via I.super.m() syntax |
20 |
* bug 404649 - [1.8][compiler] detect illegal reference to indirect or redundant super via I.super.m() syntax |
|
Lines 58-64
Link Here
|
| 58 |
|
59 |
|
| 59 |
public class ReferenceExpression extends FunctionalExpression implements InvocationSite { |
60 |
public class ReferenceExpression extends FunctionalExpression implements InvocationSite { |
| 60 |
|
61 |
|
| 61 |
private static char [] LAMBDA = { 'l', 'a', 'm', 'b', 'd', 'a' }; |
|
|
| 62 |
public Expression lhs; |
62 |
public Expression lhs; |
| 63 |
public TypeReference [] typeArguments; |
63 |
public TypeReference [] typeArguments; |
| 64 |
public char [] selector; |
64 |
public char [] selector; |
|
Lines 154-160
Link Here
|
| 154 |
buffer.append(this.resolvedType.constantPoolName()); |
154 |
buffer.append(this.resolvedType.constantPoolName()); |
| 155 |
buffer.append(';'); |
155 |
buffer.append(';'); |
| 156 |
int invokeDynamicNumber = codeStream.classFile.recordBootstrapMethod(this); |
156 |
int invokeDynamicNumber = codeStream.classFile.recordBootstrapMethod(this); |
| 157 |
codeStream.invokeDynamic(invokeDynamicNumber, argumentsSize, 1, LAMBDA, buffer.toString().toCharArray(), |
157 |
final MethodBinding sam = this.expectedType.getSingleAbstractMethod(this.enclosingScope); |
|
|
158 |
|
| 159 |
codeStream.invokeDynamic(invokeDynamicNumber, argumentsSize, 1, sam.selector, buffer.toString().toCharArray(), |
| 158 |
this.isConstructorReference(), (this.lhs instanceof TypeReference? (TypeReference) this.lhs : null), this.typeArguments); |
160 |
this.isConstructorReference(), (this.lhs instanceof TypeReference? (TypeReference) this.lhs : null), this.typeArguments); |
| 159 |
codeStream.recordPositionsFrom(pc, this.sourceStart); |
161 |
codeStream.recordPositionsFrom(pc, this.sourceStart); |
| 160 |
} |
162 |
} |