Project

General

Profile

Bug #6974

NPE at OpenEdge.Core.Class.IsInterface

Added by Vladimir Tsichevski over 1 year ago. Updated over 1 year ago.

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.

Also available in: Atom PDF