]> git.vpit.fr Git - perl/modules/LaTeX-TikZ.git/blobdiff - lib/LaTeX/TikZ/Scope.pm
Always call ->assert_valid after ->coerce
[perl/modules/LaTeX-TikZ.git] / lib / LaTeX / TikZ / Scope.pm
index c07225962824d95eb027c538d991c3e09b18c79d..3686beb28b5e7f73d4b5302524f41b8d317b7fb8 100644 (file)
@@ -54,7 +54,8 @@ sub mod {
  my $cache = $scope->_mods_cache;
 
  for (@_) {
-  my $mod = $ltmf_tc->check($_) ? $_ : $ltmf_tc->coerce($_);
+  my $mod = $ltmf_tc->coerce($_);
+  $ltmf_tc->assert_valid($mod);
   my $tag = $mod->tag;
   next if exists $cache->{$tag};
   $cache->{$tag} = $mod;
@@ -181,7 +182,23 @@ sub fold {
     $right->_mods_cache,
    );
 
-   if (@$common) {
+   my $has_different_layers;
+   for (@$only_left) {
+    if ($_->type eq 'layer') {
+     $has_different_layers = 1;
+     last;
+    }
+   }
+   unless ($has_different_layers) {
+    for (@$only_right) {
+     if ($_->type eq 'layer') {
+      $has_different_layers = 1;
+      last;
+     }
+    }
+   }
+
+   if (!$has_different_layers and @$common) {
     my $x = $left->new
                  ->mod(@$only_left)
                  ->body($left->_body);