changeset 818:bbbf8b18ab4d

...
author anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Sun, 17 Jan 2021 22:34:44 +0900
parents 720c6e5927ca
children 27ea7f1f5452
files src/parallel_execution/generate_context.pl
diffstat 1 files changed, 19 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/src/parallel_execution/generate_context.pl	Sun Jan 17 22:22:11 2021 +0900
+++ b/src/parallel_execution/generate_context.pl	Sun Jan 17 22:34:44 2021 +0900
@@ -350,12 +350,22 @@
 }
 
 sub find_generics_each_item {
-    my ($interface, $entry, $generics, $typed_variables) = @_;
+    my ($name, $entry, $generics, $typed_variables, $interface_name) = @_;
     if (defined $entry->{generics}) {
-      push(@$generics, { name => $interface, generics => $entry->{generics}});
+      my $entry = { name => $name, generics => $entry->{generics}};
+      if ($interface_name) {
+        $entry->{interface} = $interface_name;
+      }
+
+      push(@$generics, $entry);
     }
     if (defined $entry->{typed_variable}) {
-      push(@$typed_variables, { name => $interface, typed_variable => $entry->{typed_variable}});
+      my $entry  = { name => $name, typed_variable => $entry->{typed_variable}};
+      if ($interface_name) {
+        $entry->{interface} = $interface_name;
+      }
+
+      push(@$typed_variables, $entry);
     }
 }
 
@@ -368,21 +378,23 @@
     for my $interface (keys %$tree) {
       my $entry = $tree->{$interface};
       my $interface_entry = $entry->{elem};
-      find_generics_each_item($interface, $interface_entry, \@generics, \@typed_variables);
+      find_generics_each_item($interface, $interface_entry, \@generics, \@typed_variables, undef);
 
       for my $impl (keys %{$entry->{impl}}) {
         my $impl_entry = $entry->{impl}->{$impl};
-        find_generics_each_item($impl, $impl_entry, \@generics, \@typed_variables);
+        find_generics_each_item($impl, $impl_entry, \@generics, \@typed_variables, $interface);
       }
     }
 
-    #p @generics;
-        #p @typed_variables;
+    #p $tree;
     #
     my %generics_info = ();
 
     for my $item (@generics) {
       my $caller = $item->{name};
+      if (defined $item->{interface}) {
+        print STDERR "interface at $item->{interface}!!!!\n";
+      }
       for my $gene (@{$item->{generics}}) {
         my $field    = $gene->{vname};
         my $generics = $gene->{type};