Agreed.

On 2010-05-26, at 07:12, André Bargull wrote:

> I'm going to add this check and then commit the change:
> 
>> if (!ScriptCompiler.isIdentifier(when)) {
>>  throw new CompilationError(
>>    "'when' attribute for passthrough element must be a valid javascript 
>> identifier",
>>    element);
>> }
> 
> 
> On 5/18/2010 5:44 PM, André Bargull wrote:
>> One think we could (should?) do, is to check whether the value is a valid 
>> javascript identifier. Otherwise people could write <passthrough 
>> when="(function () {return false})()" > or any other complex expression.
>> 
>> 
>> On 5/18/2010 4:31 PM, P T Withington wrote:
>>> Ok.  Henry, can you do what André proposes?  This seems like the best plan.
>>> 
>>> I am pretty sure that if you end up with a back-end compile where the 
>>> conditional is not defined that the back-end will signal an error; but I 
>>> think that is the best we can do (since the tag compiler has to permit 
>>> compiling to runtime-neutral .lzo, which has no runtime specification).
>>> 
>>> On 2010-05-18, at 10:22, André Bargull wrote:
>>> 
>>>> I'm not sure whether it's possible test for valid compile-time 
>>>> conditionals at parse time. For example think of custom conditionals which 
>>>> are only used/available when compiling the actual application.
>>>> So, I'll only change two things:
>>>> - rename "runtime" to "when"
>>>> - remove prepending the "when" value with '$' in ClassModel.java, this 
>>>> means you need to write<passthrough when="$as3">  instead of<passthrough 
>>>> when="as3">. This makes<passthrough>'s "when" compatible with<switch>'s 
>>>> "property" attribute.
>>>> 
>>>> 
>>>> 
>>>> On 5/15/2010 3:31 PM, P T Withington wrote:
>>>>> Ok, you convinced me.  Reopen the bug and lets change it to `when="..."`. 
>>>>>  As a bonus, you can verify that the when condition is a valid 
>>>>> compile-time conditional, but I'm pretty sure the script compiler will 
>>>>> complain if it is not.
>>>>> 
>>>>> On 2010-05-15, at 09:13, André Bargull wrote:
>>>>> 
>>>>>> But valid (= currently supported) runtimes are only 'swf8', 'swf9', 
>>>>>> 'swf10' and 'dhtml'. That means 'as3' is not a valid runtime identifier, 
>>>>>> but I think we still want to have a pass through for both, swf9 and 
>>>>>> swf10, to avoid duplicate code.
>>>>>> (I know I'm a bit nit-picking right now, but this is my full intention, 
>>>>>> because from the user's point of view the current rationale might be 
>>>>>> confusing.)
>>>>>> 
>>>>>> 
>>>>>> On 5/15/2010 3:00 PM, P T Withington wrote:
>>>>>>> In the case of passthrough, where its intent is to "pass through" to a 
>>>>>>> particular target runtime, the runtime argument seems most appropriate 
>>>>>>> to me.  I suppose we should add some sanity checking that the runtime 
>>>>>>> argument is a valid runtime.
>>>>>>> 
>>>>>>> If you really need a passthrough conditional to other properties, you 
>>>>>>> can do so in a<script>    tag.
>>>>>>> 
>>>>>>> ---
>>>>>>> 
>>>>>>> The problem we are trying to solve here is that<switch>    cannot be 
>>>>>>> used in a binary library (because its semantics are that it is 
>>>>>>> evaluated at parse time).  Another approach would be to change switch 
>>>>>>> to have an 'evaluation time' property, but that seemed like generality 
>>>>>>> we didn't need.
>>>>>>> 
>>>>>>> On 2010-05-15, at 08:10, André Bargull wrote:
>>>>>>> 
>>>>>>> 
>>>>>>>> We had first:
>>>>>>>> <switch>
>>>>>>>> <when runtime="swf10">
>>>>>>>> <passthrough>
>>>>>>>>      import flash.utils.*;
>>>>>>>> </passthrough>
>>>>>>>> </when>
>>>>>>>> </switch>
>>>>>>>> 
>>>>>>>> "runtime" was only allowed to be: 'swf7', 'swf8', 'swf9', 'swf10' or 
>>>>>>>> 'dhtml'
>>>>>>>> 
>>>>>>>> 
>>>>>>>> The first form was deprecated in favor of:
>>>>>>>> <switch>
>>>>>>>> <when property="$swf10">
>>>>>>>> <passthrough>
>>>>>>>>      import flash.utils.*;
>>>>>>>> </passthrough>
>>>>>>>> </when>
>>>>>>>> </switch>
>>>>>>>> 
>>>>>>>> "property" can be any of the compile time constants: '$swf7', '$swf8', 
>>>>>>>> '$swf9', '$swf10', '$dhtml', '$as3', '$as2', '$debug' (left out some 
>>>>>>>> unused constants)
>>>>>>>> 
>>>>>>>> 
>>>>>>>> And now we're back with "runtime", although "runtime" is just any 
>>>>>>>> string which will be transformed to the compile time constants from 
>>>>>>>> above (by prepending "$" to the string).
>>>>>>>> 
>>>>>>>> <passthrough runtime="swf10">
>>>>>>>>  import flash.utils.*;
>>>>>>>> </passthrough>
>>>>>>>> 
>>>>>>>> But also possible:
>>>>>>>> <passthrough runtime="as3">
>>>>>>>>  import flash.utils.*;
>>>>>>>> </passthrough>
>>>>>>>> 
>>>>>>>> or:
>>>>>>>> <passthrough runtime="debug">
>>>>>>>>  import flash.utils.*;
>>>>>>>> </passthrough>
>>>>>>>> 
>>>>>>>> 
>>>>>>>> So, maybe<passthrough>'s new "runtime" attribute should rather be 
>>>>>>>> "property" like in<when>?
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> On 5/14/2010 10:46 PM, P T Withington wrote:
>>>>>>>> 
>>>>>>>>> Approved!
>>>>>>>>> 
>>>>>>>>> On 2010-05-13, at 17:19, Henry Minsky wrote:
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>>> Change 20100513-hqm-p by [email protected] on 2010-05-13 17:17:23 
>>>>>>>>>> EDT
>>>>>>>>>>    in /Users/hqm/openlaszlo/trunk1
>>>>>>>>>>    for http://svn.openlaszlo.org/openlaszlo/trunk
>>>>>>>>>> 
>>>>>>>>>> Summary:<passthrough>     should take a `runtime="..."` property
>>>>>>>>>> 
>>>>>>>>>> New Features:
>>>>>>>>>> 
>>>>>>>>>> Bugs Fixed: LPP-8995
>>>>>>>>>> 
>>>>>>>>>> Technical Reviewer: ptw
>>>>>>>>>> QA Reviewer: (pending)
>>>>>>>>>> Doc Reviewer: (pending)
>>>>>>>>>> 
>>>>>>>>>> Documentation:
>>>>>>>>>> 
>>>>>>>>>> Release Notes:
>>>>>>>>>> 
>>>>>>>>>> Overview:
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> Details:
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> Tests:
>>>>>>>>>> 
>>>>>>>>>> test case below, passthru should disappear in DHTML output:
>>>>>>>>>> <canvas width="100%" height="80%">
>>>>>>>>>> <debug  fontsize="12"/>
>>>>>>>>>> 
>>>>>>>>>> <class name="foo">
>>>>>>>>>> <passthrough runtime="swf10">
>>>>>>>>>>      import flash.net.*;
>>>>>>>>>> </passthrough>
>>>>>>>>>> <method name="foo">
>>>>>>>>>>      Debug.info('foobar');
>>>>>>>>>> </method>
>>>>>>>>>> 
>>>>>>>>>> </class>
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> </canvas>
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> Files:
>>>>>>>>>> M       WEB-INF/lps/server/src/org/openlaszlo/compiler/NodeModel.java
>>>>>>>>>> M       
>>>>>>>>>> WEB-INF/lps/server/src/org/openlaszlo/compiler/ClassModel.java
>>>>>>>>>> 
>>>>>>>>>> Changeset: 
>>>>>>>>>> http://svn.openlaszlo.org/openlaszlo/patches/20100513-hqm-p.tar
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>> 
>>>>> 
>>> 
>>> 


Reply via email to