You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@freemarker.apache.org by dd...@apache.org on 2019/08/07 23:28:07 UTC

[freemarker] branch 2.3-gae updated: Removed isLazilyGeneratedTargetResultSupported, and added bi.setTarget instead, so BI-s can override that, and call target.enableLazilyGeneratedResult() themselves these. We call the same from setDirectlyCalled() as well, so it's less confusing if everyone just calls target.enableLazilyGeneratedResult() explicitly.

This is an automated email from the ASF dual-hosted git repository.

ddekany pushed a commit to branch 2.3-gae
in repository https://gitbox.apache.org/repos/asf/freemarker.git


The following commit(s) were added to refs/heads/2.3-gae by this push:
     new 6f93a9e  Removed isLazilyGeneratedTargetResultSupported, and added bi.setTarget instead, so BI-s can override that, and call target.enableLazilyGeneratedResult() themselves these. We call the same from setDirectlyCalled() as well, so it's less confusing if everyone just calls target.enableLazilyGeneratedResult() explicitly.
6f93a9e is described below

commit 6f93a9e0b1379c84d1604799a980bf6697a4c598
Author: ddekany <dd...@apache.org>
AuthorDate: Thu Aug 8 01:24:53 2019 +0200

    Removed isLazilyGeneratedTargetResultSupported, and added bi.setTarget instead, so BI-s can override that, and call target.enableLazilyGeneratedResult() themselves these. We call the same from setDirectlyCalled() as well, so it's less confusing if everyone just calls target.enableLazilyGeneratedResult() explicitly.
---
 src/main/java/freemarker/core/BuiltIn.java                | 15 +++------------
 .../java/freemarker/core/BuiltInsForMultipleTypes.java    |  5 +++--
 src/main/java/freemarker/core/BuiltInsForSequences.java   | 15 +++++++++------
 .../core/IntermediateStreamOperationLikeBuiltIn.java      |  5 +++--
 4 files changed, 18 insertions(+), 22 deletions(-)

diff --git a/src/main/java/freemarker/core/BuiltIn.java b/src/main/java/freemarker/core/BuiltIn.java
index 5e143b1..30c9c9d 100644
--- a/src/main/java/freemarker/core/BuiltIn.java
+++ b/src/main/java/freemarker/core/BuiltIn.java
@@ -388,21 +388,12 @@ abstract class BuiltIn extends Expression implements Cloneable {
             throw new InternalError();
         }
         bi.key = key;
-        if (bi.isLazilyGeneratedTargetResultSupported()) {
-            target.enableLazilyGeneratedResult();
-        }
-        bi.target = target;
+        bi.setTarget(target);
         return bi;
     }
 
-    /**
-     * If the built-in supports a lazily generated value as its left operand (the target).
-     * Don't confuse this with what's allowed for result of the built-in itself; that's influenced by
-     * {@link Expression#enableLazilyGeneratedResult()} (and so
-     * {@link IntermediateStreamOperationLikeBuiltIn#isLazilyGeneratedTargetResultSupported()}).
-     */
-    protected boolean isLazilyGeneratedTargetResultSupported() {
-        return false;
+    protected void setTarget(Expression target) {
+        this.target = target;
     }
 
     @Override
diff --git a/src/main/java/freemarker/core/BuiltInsForMultipleTypes.java b/src/main/java/freemarker/core/BuiltInsForMultipleTypes.java
index 34ff1f0..cf70c31 100644
--- a/src/main/java/freemarker/core/BuiltInsForMultipleTypes.java
+++ b/src/main/java/freemarker/core/BuiltInsForMultipleTypes.java
@@ -485,8 +485,9 @@ class BuiltInsForMultipleTypes {
     static class sizeBI extends BuiltIn {
 
         @Override
-        protected boolean isLazilyGeneratedTargetResultSupported() {
-            return true;
+        protected void setTarget(Expression target) {
+            super.setTarget(target);
+            target.enableLazilyGeneratedResult();
         }
 
         private int countingLimit;
diff --git a/src/main/java/freemarker/core/BuiltInsForSequences.java b/src/main/java/freemarker/core/BuiltInsForSequences.java
index 55d634e..6d76e1d 100644
--- a/src/main/java/freemarker/core/BuiltInsForSequences.java
+++ b/src/main/java/freemarker/core/BuiltInsForSequences.java
@@ -143,8 +143,9 @@ class BuiltInsForSequences {
     static class firstBI extends BuiltIn {
 
         @Override
-        protected boolean isLazilyGeneratedTargetResultSupported() {
-            return true;
+        protected void setTarget(Expression target) {
+            super.setTarget(target);
+            target.enableLazilyGeneratedResult();
         }
 
         @Override
@@ -893,8 +894,9 @@ class BuiltInsForSequences {
         }
 
         @Override
-        protected boolean isLazilyGeneratedTargetResultSupported() {
-            return true;
+        protected void setTarget(Expression target) {
+            super.setTarget(target);
+            target.enableLazilyGeneratedResult();
         }
     }
     
@@ -941,8 +943,9 @@ class BuiltInsForSequences {
         }
 
         @Override
-        protected boolean isLazilyGeneratedTargetResultSupported() {
-            return true;
+        protected void setTarget(Expression target) {
+            super.setTarget(target);
+            target.enableLazilyGeneratedResult();
         }
 
         @Override
diff --git a/src/main/java/freemarker/core/IntermediateStreamOperationLikeBuiltIn.java b/src/main/java/freemarker/core/IntermediateStreamOperationLikeBuiltIn.java
index a270276..0d1378b 100644
--- a/src/main/java/freemarker/core/IntermediateStreamOperationLikeBuiltIn.java
+++ b/src/main/java/freemarker/core/IntermediateStreamOperationLikeBuiltIn.java
@@ -74,8 +74,9 @@ abstract class IntermediateStreamOperationLikeBuiltIn extends BuiltInWithParseTi
     }
 
     @Override
-    protected final boolean isLazilyGeneratedTargetResultSupported() {
-        return true;
+    protected void setTarget(Expression target) {
+        super.setTarget(target);
+        target.enableLazilyGeneratedResult();
     }
 
     protected List<Expression> getArgumentsAsList() {