Bug #6963
Incorrect conversion of legacy class constructors with an unknown argument of object type
Status:
New
Priority:
Normal
Assignee:
Eduard Marcu
Target version:
-
Start date:
Due date:
% Done:
0%
billable:
No
vendor_id:
GCD
case_num:
version_reported:
version_resolved:
reviewer:
production:
No
env_name:
topics:
Related issues
History
#1 Updated by Vladimir Tsichevski over 3 years ago
If an unknown value is passed an an argument to a class constructor, the conversion produces an correct call.
The legacy class:
CLASS unittests.SampleClassConstructors :
CONSTRUCTOR PUBLIC SampleClassConstructors ( arg1 AS CHARACTER,
o1 AS Progress.Lang.Object,
o2 AS Progress.Lang.Object):
END.
END.
The test program ABLUnit:
USING OpenEdge.Core.Assert.
USING unittests.SampleClassConstructors.
ROUTINE-LEVEL ON ERROR UNDO, THROW.
CLASS unittests.TestClassConstructorObject :
DEFINE PRIVATE VARIABLE object1 AS Progress.Lang.Object NO-UNDO.
DEFINE PRIVATE VARIABLE object2 AS Progress.Lang.Object NO-UNDO.
@Before.
METHOD PUBLIC VOID BeforeClass():
object1 = NEW Progress.Lang.Object().
object2 = NEW Progress.Lang.Object().
END METHOD.
@Test.
METHOD PUBLIC VOID TestObject1 ():
Assert:NotNull(NEW SampleClassConstructors("abcd", ?, object2)).
END METHOD.
@Test.
METHOD PUBLIC VOID TestObject2 ():
Assert:NotNull(NEW SampleClassConstructors("abcd", object1, ?)).
END METHOD.
END.
The conversion result:
@LegacySignature(type = Type.METHOD, name = "TestObject1")
@Test
public void testObject1()
{
internalProcedure(TestClassConstructorObject.class, this, "TestObject1", new Block((Body) () ->
{
Assert.notNull(ObjectOps.newInstance(SampleClassConstructors.class, "III", "abcd", object2));
}));
}
@LegacySignature(type = Type.METHOD, name = "TestObject2")
@Test
public void testObject2()
{
internalProcedure(TestClassConstructorObject.class, this, "TestObject2", new Block((Body) () ->
{
Assert.notNull(ObjectOps.newInstance(SampleClassConstructors.class, "III", "abcd", object1));
}));
}
Note: the unknown arguments are just missing in Java calls to ObjectOps.newInstance.
#3 Updated by Constantin Asofiei about 3 years ago
- Project changed from Conversion Tools to Base Language
#4 Updated by Constantin Asofiei about 3 years ago
- Related to Bug #7315: unknown literal passed as an argument to a 'object' parameter added
#5 Updated by Alexandru Lungu over 1 year ago
- Assignee set to Eduard Marcu