|
Lines 11-16
Link Here
|
| 11 |
* |
11 |
* |
| 12 |
* Contributors: |
12 |
* Contributors: |
| 13 |
* IBM Corporation - initial API and implementation |
13 |
* IBM Corporation - initial API and implementation |
|
|
14 |
* Andy Clement (GoPivotal, Inc) aclement@gopivotal.com - Contributions for |
| 15 |
* Bug 409245 - [1.8][compiler] Type annotations dropped when call is routed through a synthetic bridge method |
| 14 |
*******************************************************************************/ |
16 |
*******************************************************************************/ |
| 15 |
package org.eclipse.jdt.internal.eval; |
17 |
package org.eclipse.jdt.internal.eval; |
| 16 |
|
18 |
|
|
Lines 82-95
public void generateCode(BlockScope currentScope, CodeStream codeStream, boolean
Link Here
|
| 82 |
// actual message invocation |
84 |
// actual message invocation |
| 83 |
TypeBinding constantPoolDeclaringClass = CodeStream.getConstantPoolDeclaringClass(currentScope, codegenBinding, this.actualReceiverType, this.receiver.isImplicitThis()); |
85 |
TypeBinding constantPoolDeclaringClass = CodeStream.getConstantPoolDeclaringClass(currentScope, codegenBinding, this.actualReceiverType, this.receiver.isImplicitThis()); |
| 84 |
if (isStatic) { |
86 |
if (isStatic) { |
| 85 |
codeStream.invoke(Opcodes.OPC_invokestatic, codegenBinding, constantPoolDeclaringClass); |
87 |
codeStream.invoke(Opcodes.OPC_invokestatic, codegenBinding, constantPoolDeclaringClass, this.typeArguments); |
| 86 |
} else if( (this.receiver.isSuper()) || codegenBinding.isPrivate()){ |
88 |
} else if( (this.receiver.isSuper()) || codegenBinding.isPrivate()){ |
| 87 |
codeStream.invoke(Opcodes.OPC_invokespecial, codegenBinding, constantPoolDeclaringClass); |
89 |
codeStream.invoke(Opcodes.OPC_invokespecial, codegenBinding, constantPoolDeclaringClass, this.typeArguments); |
| 88 |
} else { |
90 |
} else { |
| 89 |
if (constantPoolDeclaringClass.isInterface()) { // interface or annotation type |
91 |
if (constantPoolDeclaringClass.isInterface()) { // interface or annotation type |
| 90 |
codeStream.invoke(Opcodes.OPC_invokeinterface, codegenBinding, constantPoolDeclaringClass); |
92 |
codeStream.invoke(Opcodes.OPC_invokeinterface, codegenBinding, constantPoolDeclaringClass, this.typeArguments); |
| 91 |
} else { |
93 |
} else { |
| 92 |
codeStream.invoke(Opcodes.OPC_invokevirtual, codegenBinding, constantPoolDeclaringClass); |
94 |
codeStream.invoke(Opcodes.OPC_invokevirtual, codegenBinding, constantPoolDeclaringClass, this.typeArguments); |
| 93 |
} |
95 |
} |
| 94 |
} |
96 |
} |
| 95 |
} else { |
97 |
} else { |
| 96 |
- |
|
|