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 <[email protected]>
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() {

Reply via email to