Project

General

Profile

Bug #6404

conversion for dataset-handle and table-handle parameters with table fields or class properties

Added by Constantin Asofiei almost 2 years ago. Updated almost 2 years ago.

Status:
Test
Priority:
High
Target version:
-
Start date:
Due date:
% Done:

100%

billable:
No
vendor_id:
GCD
case_num:

Related issues

Related to Base Language - Feature #4350: method overload when they differ by a temp-table, dataset, buffer or object or extent or parameter modes WIP

History

#2 Updated by Constantin Asofiei almost 2 years ago

  • Assignee changed from Constantin Asofiei to Ovidiu Maxiniuc

Ovidiu, in testcases/uast/dsh_th_args there are tests which show how a table field or class property can work as an argument for TABLE-HANDLE and DATASET-HANDLE . I think I've covered all cases, but there are still some issues.

For example , there is no TableParameter emitted at all for fields and class properties (I assume for vars is emitted, didn't test). This and another issue related to DYNAMIC-NEW I think are what's left.

The current patch is pretty simple, I just fixed set_handle_stmts in common-progress.rules:

### Eclipse Workspace Patch 1.0
#P p2j6129a
Index: rules/include/common-progress.rules
===================================================================
--- rules/include/common-progress.rules    (revision 3611)
+++ rules/include/common-progress.rules    (working copy)
@@ -3586,6 +3586,23 @@
                target.upPath("STATEMENT/CREATE_WIDGET")
             <action>match = true</action>
          </rule>
+         
+         <rule>target.parent.type == prog.kw_dset_hnd or target.parent.type == prog.kw_tab_hand
+            <rule>target.upPath("KW_RUN/LPARENS/PARAMETER/EXPRESSION/KW_DSET_HND") or 
+                  target.upPath("KW_RUN/LPARENS/PARAMETER/EXPRESSION/KW_TAB_HAND")
+               <!-- check to be an OUTPUT or INPUT-OUTPUT parameter -->
+               <action>
+                  match = target.parent.parent.parent.downPath("KW_OUTPUT") or 
+                          target.parent.parent.parent.downPath("KW_IN_OUT")
+               </action>
+            </rule>
+   
+            <rule>evalLib("call_to_user_defined_function", target.parent.parent) or
+                  evalLib("oo_call_type", target.parent.parent, target.parent)
+               <!-- check to be an OUTPUT or INPUT-OUTPUT parameter -->
+               <action>match = not evalLib("input_argument", target.parent)</action>
+            </rule>
+         </rule>
       </function>

       <function name="set_field_comhandle_stmts">

If you can fix it tonight, do let me know. Otherwise, I'll pick it up in the morning.

#3 Updated by Ovidiu Maxiniuc almost 2 years ago

Sorry, no, I could not come up with a better solution for this issue.

#4 Updated by Constantin Asofiei almost 2 years ago

  • Assignee changed from Ovidiu Maxiniuc to Constantin Asofiei

#5 Updated by Constantin Asofiei almost 2 years ago

  • % Done changed from 0 to 100
  • Status changed from WIP to Review

Fixed in 6129a/13880

Ovidiu, please review.

#6 Updated by Greg Shah almost 2 years ago

Unfortunately, we are duplicating effort here. I've already resolved this in #4350 but need time to fix the issues before it can be integrated into 6129a.

#7 Updated by Ovidiu Maxiniuc almost 2 years ago

I have reviewed the changes in 13880 and they look OK to me.
Does this completely overlap with #4350 patches?

#8 Updated by Greg Shah almost 2 years ago

Yes, I think so. I did it slightly differently because I introduced specific subclasses to handle the combinations of mode + type:

  src/com/goldencode/p2j/persist/InputDataSetHandle.java
  src/com/goldencode/p2j/persist/InputDataSetParameter.java
  src/com/goldencode/p2j/persist/InputOutputDataSetHandle.java
  src/com/goldencode/p2j/persist/InputOutputDataSetParameter.java
  src/com/goldencode/p2j/persist/OutputDataSetHandle.java
  src/com/goldencode/p2j/persist/OutputDataSetParameter.java
  src/com/goldencode/p2j/util/InputOutputTableHandle.java
  src/com/goldencode/p2j/util/InputOutputTableParameter.java
  src/com/goldencode/p2j/util/InputTableHandle.java
  src/com/goldencode/p2j/util/InputTableParameter.java
  src/com/goldencode/p2j/util/OutputTableHandle.java
  src/com/goldencode/p2j/util/OutputTableParameter.java

This allows us to overload signatures by mode and even separate out the different handle types.

#9 Updated by Constantin Asofiei almost 2 years ago

Ovidiu, maybe you recall better - but wasn't it possible to pass table-handle to table parameter and table to table-handle?

#10 Updated by Greg Shah almost 2 years ago

Constantin Asofiei wrote:

Ovidiu, maybe you recall better - but wasn't it possible to pass table-handle to table parameter and table to table-handle?

That is taken care of by having different constructors for these classes.

#11 Updated by Constantin Asofiei almost 2 years ago

  • Related to Feature #4350: method overload when they differ by a temp-table, dataset, buffer or object or extent or parameter modes added

#12 Updated by Constantin Asofiei almost 2 years ago

  • Status changed from Review to Test

Also available in: Atom PDF