Project

General

Profile

Bug #10316

Address edgecases for DYNAMIC-PROPERTY

Added by Paul Bodale about 1 year ago. Updated about 1 year ago.

Status:
New
Priority:
Normal
Assignee:
-
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

Related to Base Language - Feature #6161: add support for DYNAMIC-PROPERTY() built-in function and DYNAMIC-PROPERTY language statement Closed
Related to Base Language - Feature #4373: finish core OO 4GL support New

History

#1 Updated by Paul Bodale about 1 year ago

This task was created to address the cases for complete support of DYNAMIC-PROPERTY builtin function that were left out in the task #6161. As a baseline, the same cases from #10315-1 should be checked. Currently not all tests from DYNAMIC-INVOKE have an equivalent for DYNAMIC-PROPERTY. All the existing tests regarding the functionality are located in tests/base_language/builtin_functions/accepted_params/dynamic_property/ .
It is known that the SetParameter object method has many problems that remain to be investigated.

Here is the status of the support for DYNAMIC-INVOKE as of the creation of this task:
- All tests except assigning to buffers are passing conversion and compilation phases
- Here are the known problems and unimplemented features:
  • Arithmetic ops:
    • In progress the expression 1 / DYNAMIC-INVOKE(clsRef, "returnExtent") is valid and returns ? when assigned to a variable and an array of ? when assigned to an extent. FWD doesn't currently support this.
    • var1 / var2 / DYNAMIC-INVOKE(clsRef, "voidMethod") returns ? BUT var1 / DYNAMIC-INVOKE(clsRef, "voidMethod") and DYNAMIC-INVOKE(clsRef, "voidMethod") / var1 throw error. FWD throws error in the first case but behaves correctly on the other 2.
    • Wrong errors are thrown for some cases of -, + and * operations.
  • Block statements:
    • DO WHILE DYNAMIC-INVOKE(clsRef, "retVarChar") doesn't throw error but it should.
    • REPEAT WHILE DYNAMIC-INVOKE(clsRef, "retVarChar") doesn't throw error but it should.
  • Call types:
    • (object method) SetParameter(1, "INTEGER", "INPUT", DYNAMIC-INVOKE(clsRef, "returnExtent3")) (object method) doesn't throw error but it should.
    • SetParameter methods have different behavior the object based one throwing error on the spot when trying to set a parameter not declared as extent and the other one throwing the error at the invocation call.
    • calling internal procedures in some cases results in the wrong errors.
    • calling methods in some cases results in the wrong errors.
  • Widgets/Handles:
    • (this is non-related) Dynamic combo-box doesn't have the same behavior.
  • Logical ops:
    • DYNAMIC-INVOKE(clsRef, "returnExtent") AND logicalVar is a valid logical expression and it seems like the call is considered to be FALSE. FWD fails.
    • Same for the OR operator.
    • IF DYNAMIC-INVOKE(clsRef, "returnExtent") THEN is a valid statement and it evaluates to FALSE. FWD fails.
    • IF NOT DYNAMIC-INVOKE(clsRef, "returnExtent") THEN is a valid statement and it evaluates to TRUE. FWD fails.
  • Return statement:
    • Unimplemented behavior of error handling. Some errors are thrown to the caller and stop execution, others are not thrown to the caller and handled in the CATCH block and others are thrown to the caller and also handled in the CATCH block.
    • Wrong behavior of functions in some cases.
    • Wrong behavior of methods in some cases.
    • DYNAMIC-FUNCTION returning extent is not implemented.
  • Dynamic property:
    • wrong errors being thrown in some cases
  • Assignments
    • Assignments to database tables, buffers and TEMP-TABLES except when using :: result in the failing of compilation phase.

Tests are located in tests/base_language/builtin_functions/accepted_params/dynamic_invoke/*

#2 Updated by Constantin Asofiei 12 months ago

  • Related to Feature #6161: add support for DYNAMIC-PROPERTY() built-in function and DYNAMIC-PROPERTY language statement added

#3 Updated by Paul Bodale 6 months ago

Also available in: Atom PDF