I get a parser error thrown bwhen I make an array with a trailing
comma after the last element, like
var forceload = [LzText,
// LzInputText.
LzView,
LzNode,
LzAnimator,
LzAnimatorGroup,
LzLayout,
LzScript,
];
I thought this was legal in JS, or maybe that's Python I'm thinking
of?
[echo] Compiling C:\users\hqm\openlaszlo\devildog/lps/includes/
lfc/LFC9.lzl
[java] No prec for ASTEmptyExpression in
[java] org.openlaszlo.sc.CompilerException
[java] at org.openlaszlo.sc.ParseTreePrinter.maybeAddParens
(ParseTreePrinter.java:624)
[java] at
org.openlaszlo.sc.ParseTreePrinter.visitArrayLiteral
(ParseTreePrinter.java:569)
[java] at org.openlaszlo.sc.ParseTreePrinter.visit
(ParseTreePrinter.java:279)
[java] at org.openlaszlo.sc.ParseTreePrinter.visit
(ParseTreePrinter.java:160)
[java] at org.openlaszlo.sc.ParseTreePrinter.visit
(ParseTreePrinter.java:160)
[java] at org.openlaszlo.sc.ParseTreePrinter.visit
(ParseTreePrinter.java:160)
[java] at org.openlaszlo.sc.ParseTreePrinter.visit
( ParseTreePrinter.java:160)
[java] at org.openlaszlo.sc.ParseTreePrinter.visit
(ParseTreePrinter.java:160)
[java] at org.openlaszlo.sc.ParseTreePrinter.visit
(ParseTreePrinter.java:160)
[java] at org.openlaszlo.sc.ParseTreePrinter.visit
(ParseTreePrinter.java:160)
[java] at org.openlaszlo.sc.ParseTreePrinter.visit
(ParseTreePrinter.java:160)
[java] at org.openlaszlo.sc.ParseTreePrinter.visit
( ParseTreePrinter.java:160)
[java] at org.openlaszlo.sc.ParseTreePrinter.visit
(ParseTreePrinter.java:160)
[java] at org.openlaszlo.sc.ParseTreePrinter.visit
(ParseTreePrinter.java:160)
[java] at org.openlaszlo.sc.ParseTreePrinter.visit
(ParseTreePrinter.java:160)
[java] at org.openlaszlo.sc.ParseTreePrinter.visit
(ParseTreePrinter.java:160)
[java] at org.openlaszlo.sc.ParseTreePrinter.visit
( ParseTreePrinter.java:160)
[java] at
org.openlaszlo.sc.ParseTreePrinter.makeTranslationUnits
(ParseTreePrinter.java:833)
[java] at
org.openlaszlo.sc.SWF9Generator.makeTranslationUnits
(SWF9Generator.java :743)
[java] at org.openlaszlo.sc.Compiler.compile(Compiler.java:
349)
[java] at org.openlaszlo.sc.lzsc.compile(lzsc.java:110)
[java] at org.openlaszlo.sc.lzsc.compile(lzsc.java:322)
[java] at org.openlaszlo.sc.Main.main(Main.java:10)
[java] No prec for ASTEmptyExpression in
[java] org.openlaszlo.sc.CompilerException
[java] at org.openlaszlo.sc.ParseTreePrinter.maybeAddParens
(ParseTreePrinter.java:624)
[java] at
org.openlaszlo.sc.ParseTreePrinter.visitArrayLiteral
(ParseTreePrinter.java:569)
[java] at org.openlaszlo.sc.ParseTreePrinter.visit
(ParseTreePrinter.java:279)
[java] at org.openlaszlo.sc.ParseTreePrinter.visit
(ParseTreePrinter.java:160)
[java] at org.openlaszlo.sc.ParseTreePrinter.visit
(ParseTreePrinter.java:160)
[java] at org.openlaszlo.sc.ParseTreePrinter.visit
(ParseTreePrinter.java:160)
[java] at org.openlaszlo.sc.ParseTreePrinter.visit
(ParseTreePrinter.java:160)
On Jan 9, 2008 10:35 AM, Henry Minsky < [EMAIL PROTECTED]> wrote:
I guess I can have a statement at the start of the LzApplication
main class, that just makes a list of all the
LFC classes that have LZX tag names, and that will force them to be
loaded.
On Jan 9, 2008 10:33 AM, Henry Minsky <[EMAIL PROTECTED]> wrote:
Interesting... LzNode looks at the ConstructorMap *before* it
creates an LzText, so that would
explain why it isn't there yet. Given this behavior, anyone have
any suggestions as to how to build
the constructormap table in the distributed way we're doing it
currently?.
For now, I'm just going to hardcode the whole table into the Laszlo
application startup class I'm building.
On Jan 9, 2008 10:29 AM, Donald Anderson < [EMAIL PROTECTED]> wrote:
Henry,
At the time you have looked at ConstructorMap, have you
already created a LzText object? If not, maybe it's doing
lazy creation of the classes - I know that Java does this -
static initializers and blocks don't occur until the class is
loaded, and a class may not be loaded until some code executes
that either creates an object of that type or references a static
method/var.
On Jan 9, 2008, at 9:59 AM, Henry Minsky wrote:
In one of the LFC files I declare a global
var ConstructorMap = {};
which gets turned into it's own declaration file by the script
compiler
ConstructorMap.as:
package {
public var ConstructorMap = {};
}
In each LFC file I have a statement to add a tag to this global
dynamic class LzView extends LzNode {
static var tagname = 'view';
ConstructorMap[tagname] = LzView;
dynamic class LzAnimator extends LzAnimatorGroup {
static var tagname = 'animator';
ConstructorMap[tagname] = LzAnimator;
dynamic class LzText extends LzView {
static var tagname = 'text';
ConstructorMap[tagname] = LzText;
But when the system is running, there is no entry in ConstructorMap
['text'], in fact
the only entries in the ConstructorMap are
view: [class LzView], node: [class LzNode], canvas: [class
LzCanvas],
missing are animator, layout, animatorgroup, text
So I'm wondering is there some arbitrary ordering issue where some
of the
classes are executing the "ConstructorMap[foo] = bar" before
ConstructorMap
actually gets initialized, and silently failing, or what? I can't
figure
out if this is a compiler bug in Flex or if I'm doing something
wrong. According to
the AS3 docs, statements at the top level of a class declaration
get executed once
when the class is defined. But I am wondering how that interacts
with global var initializations,
maybe the order is arbitrary?
--
Henry Minsky
Software Architect
[EMAIL PROTECTED]
--
Don Anderson
Java/C/C++, Berkeley DB, systems consultant
voice: 617-547-7881
email: [EMAIL PROTECTED]
www: http://www.ddanderson.com
--
Henry Minsky
Software Architect
[EMAIL PROTECTED]
--
Henry Minsky
Software Architect
[EMAIL PROTECTED]
--
Henry Minsky
Software Architect
[EMAIL PROTECTED]