1773 boolean isArrayOp() { |
1773 boolean isArrayOp() { |
1774 return tree.sym.owner == syms.arrayClass; |
1774 return tree.sym.owner == syms.arrayClass; |
1775 } |
1775 } |
1776 |
1776 |
1777 boolean isPrivateConstructor() { |
1777 boolean isPrivateConstructor() { |
|
1778 //hack needed to workaround 292 bug (8005122) |
|
1779 //when 292 issue is fixed we should simply remove this |
1778 return tree.sym.name == names.init && |
1780 return tree.sym.name == names.init && |
1779 (tree.sym.flags() & PRIVATE) != 0; |
1781 (tree.sym.flags() & PRIVATE) != 0; |
|
1782 } |
|
1783 |
|
1784 boolean receiverAccessible() { |
|
1785 //hack needed to workaround 292 bug (7087658) |
|
1786 //when 292 issue is fixed we should remove this and change the backend |
|
1787 //code to always generate a method handle to an accessible method |
|
1788 return tree.ownerAccessible; |
1780 } |
1789 } |
1781 |
1790 |
1782 /** |
1791 /** |
1783 * Does this reference needs a bridge (i.e. var args need to be |
1792 * Does this reference needs a bridge (i.e. var args need to be |
1784 * expanded or "super" is used) |
1793 * expanded or "super" is used) |
1785 */ |
1794 */ |
1786 final boolean needsBridge() { |
1795 final boolean needsBridge() { |
1787 return isSuper || needsVarArgsConversion() || isArrayOp() || isPrivateConstructor(); |
1796 return isSuper || needsVarArgsConversion() || isArrayOp() || |
|
1797 isPrivateConstructor() || !receiverAccessible(); |
1788 } |
1798 } |
1789 |
1799 |
1790 Type generatedRefSig() { |
1800 Type generatedRefSig() { |
1791 return types.erasure(tree.sym.type); |
1801 return types.erasure(tree.sym.type); |
1792 } |
1802 } |