Bug #6974
NPE at OpenEdge.Core.Class.IsInterface
Status:
New
Priority:
Normal
Assignee:
-
Target version:
-
Start date:
Due date:
% Done:
0%
billable:
No
vendor_id:
GCD
case_num:
History
#1 Updated by Vladimir Tsichevski over 1 year ago
The test code (isinterface.p
):
DEFINE PRIVATE VARIABLE derivedClassInstance AS unittests.InheritedClassSample NO-UNDO. derivedClassInstance = NEW unittests.InheritedClassSample(). DEFINE VARIABLE ifaces AS CLASS Progress.Lang.Class extent NO-UNDO. ifaces = derivedClassInstance:GetClass():GetInterfaces(). DEFINE VARIABLE iface AS CLASS Progress.Lang.Class NO-UNDO. iface = ifaces[1]. MESSAGE iface:IsInterface().
The unittests.InheritedClassSample
code:
CLASS unittests.InheritedClassSample FINAL INHERITS unittests.AbstractClassSample IMPLEMENTS unittests.InterfaceClassSample: END CLASS.
The unittests.InterfaceClassSample
code:
INTERFACE unittests.InterfaceClassSample: END INTERFACE.
The unittests.AbstractClassSample
code:
CLASS unittests.AbstractClassSample ABSTRACT: END CLASS.
The NPE stack trace:
TransactionManager.access$18(TransactionManager$WorkArea, String, int, int, boolean, boolean, boolean, boolean, boolean, BlockType, Block) line: 4335 TransactionManager$TransactionHelper.pushScope(String, int, int, boolean, boolean, boolean, boolean, boolean, BlockType, Block) line: 8734 TransactionManager$TransactionHelper.pushScope(String, int, int, boolean, boolean, boolean, boolean, BlockType, Block) line: 8669 BlockManager.functionBlock(Class<?>, Object, String, TransactionType, Block, Class<T>, int) line: 9198 BlockManager.extentFunction(Class<?>, Object, String, Class<T>, TransactionType, Block) line: 1342 BlockManager.extentFunction(Class<?>, Object, String, Class<T>, Block) line: 1282 LegacyClass.getInterfaces() line: 1153 Isinterface.lambda$1() line: 40 137590431.body() line: not available Block.body() line: 636 BlockManager.processBody(BlockManager$WorkArea, Block, OnPhrase[]) line: 8649 BlockManager.topLevelBlock(Class<?>, Object, String, TransactionType, BlockType, Block) line: 8315 BlockManager.externalProcedure(Object, BlockManager$TransactionType, Block) line: 543 BlockManager.externalProcedure(Object, Block) line: 516 Isinterface.execute() line: 33 ...
In OE the similar code works fine.