diff options
author | Andy Wingo <wingo@pobox.com> | 2009-02-22 16:01:11 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2009-02-22 16:01:11 +0100 |
commit | e05320fa549af175c8cbb7bed8cd4ece873033da (patch) | |
tree | faaaca78867b6d3fd14ea6600f5f24b86343880c /module/language/ecmascript/base.scm | |
parent | bb67fe27ab5cda3fcefaa1c471f75c8241cc12b2 (diff) | |
download | guile-e05320fa549af175c8cbb7bed8cd4ece873033da.tar.gz |
compile for-in
* module/language/ecmascript/base.scm (prop-keys): New method, returns
the list of keys of props of this instance.
* module/language/ecmascript/impl.scm: Refactor the global object into a
special kind of module object. Provide a prop-keys implementation for
module objects.
* module/language/ecmascript/compile-ghil.scm (comp): Compile for-in.
* module/language/ecmascript/impl.scm: Reshuffly things, and implement
make-enumerator, a helper for use in for-in statements.
* module/language/ecmascript/parse.scm (parse-ecmascript): Fix parsing of
for (var foo in bar) {}...
Diffstat (limited to 'module/language/ecmascript/base.scm')
-rw-r--r-- | module/language/ecmascript/base.scm | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/module/language/ecmascript/base.scm b/module/language/ecmascript/base.scm index b799067df..1463d358b 100644 --- a/module/language/ecmascript/base.scm +++ b/module/language/ecmascript/base.scm @@ -24,7 +24,7 @@ #:export (*undefined* *this* <js-object> *object-prototype* js-prototype js-props js-prop-attrs js-value js-constructor js-class - pget prop-attrs prop-has-attr? pput has-property? pdel + pget prop-keys prop-attrs prop-has-attr? pput has-property? pdel object->string object->number object->value/string object->value/number object->value @@ -48,6 +48,9 @@ (constructor #:getter js-constructor #:init-value #f #:init-keyword #:constructor) (class #:getter js-class #:init-value "Object" #:init-keyword #:class)) +(define-method (prop-keys (o <js-object>)) + (hash-map->list (lambda (k v) k) (js-props o))) + (define-method (pget (o <js-object>) (p <string>)) (pget o (string->symbol p))) |