Robert Krimen
dea31a3d39
Fix behavior when breaking a loop into an outer block
...
This fixes #87
2014-07-02 21:33:53 -07:00
Tim Jurcka
c65402d4bf
Fix panic: in.value.(Value) != true
...
When copying a runtime which contains objects with property accessors ({g,s}etters)
—
$ go test -v -run=Test_issue86
=== RUN Test_issue86
~~~ FAIL: (Terst)
--- FAIL: Test_issue86 (0.00 seconds)
panic: in.value.(Value) != true [recovered]
panic: in.value.(Value) != true [recovered]
panic: in.value.(Value) != true
goroutine 20 [running]:
runtime.panic(0x2f5400, 0x2086ed7e0)
/usr/local/go/src/pkg/runtime/panic.c:279 +0xf5
testing.func·006()
/usr/local/go/src/pkg/testing/testing.go:416 +0x176
runtime.panic(0x2f5400, 0x2086ed7e0)
/usr/local/go/src/pkg/runtime/panic.c:248 +0x18d
_/Users/tim/repositories/github.com/sdgoij/otto/terst.func·001()
/Users/tim/repositories/github.com/sdgoij/otto/terst/terst.go:475 +0xf5
runtime.panic(0x2f5400, 0x2086ed7e0)
/usr/local/go/src/pkg/runtime/panic.c:248 +0x18d
_/Users/tim/repositories/github.com/sdgoij/otto.(*_clone).property(0x2087a6030, 0x2a0360, 0x2086ed5d0, 0x92, 0x0, 0x0, 0x0)
/Users/tim/repositories/github.com/sdgoij/otto/clone.go:146 +0x186
_/Users/tim/repositories/github.com/sdgoij/otto.objectClone(0x208779b60, 0x2087a8ba0, 0x2087a6030, 0x20878f4a0)
/Users/tim/repositories/github.com/sdgoij/otto/object_class.go:471 +0x279
_/Users/tim/repositories/github.com/sdgoij/otto.(*_clone).object(0x2087a6030, 0x208779b60, 0x208779b60)
/Users/tim/repositories/github.com/sdgoij/otto/clone.go:87 +0xf1
_/Users/tim/repositories/github.com/sdgoij/otto.(*_clone).value(0x2087a6030, 0x5, 0x336680, 0x208779b60, 0x0, 0x0, 0x0)
/Users/tim/repositories/github.com/sdgoij/otto/clone.go:121 +0xb6
_/Users/tim/repositories/github.com/sdgoij/otto.(*_clone).property(0x2087a6030, 0x341ea0, 0x2087a40a0, 0x48, 0x0, 0x0, 0x0)
/Users/tim/repositories/github.com/sdgoij/otto/clone.go:144 +0xbc
_/Users/tim/repositories/github.com/sdgoij/otto.objectClone(0x2086f0c00, 0x208779c80, 0x2087a6030, 0x20878f8e0)
/Users/tim/repositories/github.com/sdgoij/otto/object_class.go:471 +0x279
_/Users/tim/repositories/github.com/sdgoij/otto.(*_clone).object(0x2087a6030, 0x2086f0c00, 0x2087a60f0)
/Users/tim/repositories/github.com/sdgoij/otto/clone.go:87 +0xf1
_/Users/tim/repositories/github.com/sdgoij/otto.(*_runtime).clone(0x20873c000, 0x0)
/Users/tim/repositories/github.com/sdgoij/otto/clone.go:29 +0x1b9
_/Users/tim/repositories/github.com/sdgoij/otto.(*Otto).Copy(0x2086ed3c0, 0x75)
/Users/tim/repositories/github.com/sdgoij/otto/otto.go:471 +0x2b
_/Users/tim/repositories/github.com/sdgoij/otto.func·098()
/Users/tim/repositories/github.com/sdgoij/otto/bug_test.go:592 +0xf5
_/Users/tim/repositories/github.com/sdgoij/otto/terst.func·002()
/Users/tim/repositories/github.com/sdgoij/otto/terst/terst.go:479 +0x21a
_/Users/tim/repositories/github.com/sdgoij/otto/terst.Terst(0x20873a1b0, 0x20878ff40, 0x1, 0x1)
/Users/tim/repositories/github.com/sdgoij/otto/terst/terst.go:480 +0x196
_/Users/tim/repositories/github.com/sdgoij/otto.tt(0x20873a1b0, 0x20878ff40, 0x1, 0x1)
/Users/tim/repositories/github.com/sdgoij/otto/testing_test.go:19 +0x16a
_/Users/tim/repositories/github.com/sdgoij/otto.Test_issue86(0x20873a1b0)
/Users/tim/repositories/github.com/sdgoij/otto/bug_test.go:594 +0x72
testing.tRunner(0x20873a1b0, 0x6277f0)
/usr/local/go/src/pkg/testing/testing.go:422 +0x8b
created by testing.RunTests
/usr/local/go/src/pkg/testing/testing.go:504 +0x8db
goroutine 16 [chan receive]:
testing.RunTests(0x4baf48, 0x6273a0, 0x172, 0x172, 0x1)
/usr/local/go/src/pkg/testing/testing.go:505 +0x923
testing.Main(0x4baf48, 0x6273a0, 0x172, 0x172, 0x6219e0, 0x3, 0x3, 0x621aa0, 0x2, 0x2)
/usr/local/go/src/pkg/testing/testing.go:435 +0x84
main.main()
_/Users/tim/repositories/github.com/sdgoij/otto/_test/_testmain.go:795 +0x9c
goroutine 19 [finalizer wait]:
runtime.park(0x157e0, 0x629838, 0x626809)
/usr/local/go/src/pkg/runtime/proc.c:1369 +0x89
runtime.parkunlock(0x629838, 0x626809)
/usr/local/go/src/pkg/runtime/proc.c:1385 +0x3b
runfinq()
/usr/local/go/src/pkg/runtime/mgc0.c:2644 +0xcf
runtime.goexit()
/usr/local/go/src/pkg/runtime/proc.c:1445
exit status 2
FAIL _/Users/tim/repositories/github.com/sdgoij/otto 0.029s
2014-06-28 12:40:49 +02:00
linlexing
5dad38eb5d
Fix string representation of GREATER_OR_EQUAL
...
This fixes #82
2014-06-21 21:54:06 -07:00
Robert Krimen
ed456945de
Improve error reporting (again)
2014-06-21 21:16:58 -07:00
Robert Krimen
e6768252c2
Improve error reporting
...
* Delay entering global scope on code evaluation, not runtime creation
This fixes #66
2014-06-12 21:27:32 -07:00
Robert Krimen
709a0aa7ff
Value.string(), .float64(), .bool(), etc.
2014-06-06 21:29:40 -07:00
Robert Krimen
b813fe3676
Fix JSON.stringify treating large integers as float64
...
This fixes #80
2014-06-06 21:08:59 -07:00
Robert Krimen
de36a84a51
Fix cloning of _fnStash
...
This may help #71
2014-06-04 21:53:31 -07:00
Robert Krimen
6c7c425424
Fix toReflectValue to handle Struct, Map, Slice, etc.
...
This fixes #79
2014-06-04 18:08:42 -07:00
Robert Krimen
1a2fa0b815
Fix "Halting Problem" example
...
As discussed in #71 , the original example contains a race condition that could cause the goroutine to block forever.
2014-05-31 13:38:11 -07:00
Robert Krimen
f09ce5eac2
Add mutex locking for .Copy()
2014-05-30 20:27:30 -07:00
Robert Krimen
98be5e74da
go vet
...
This fixes #76
I cheated on some of these.
2014-05-28 21:46:08 -07:00
Robert Krimen
918abeb8d8
The zero value of Value is now defined to be undefined
...
Previously, it was a publically accessible but invalid value (valueEmpty).
* Deprecate internal use of UndefinedValue(), NullValue(), FalseValue(), TrueValue()
* Guard against Empty, Result, Reference values from escaping the package
2014-05-28 21:23:32 -07:00
Robert Krimen
526d3b2fd5
Minor cloning adjustments
...
Mostly cosmetic.
2014-05-27 22:09:57 -07:00
Robert Krimen
9cd045ef04
Simplification & refactor of (parts of) the runtime
...
* Proper lowercasing for internal stuff
* *Environment => *_stash
* ExecutionContext => _scope
* Simpler & shallower call/construct mechanics
* Remove unnecessary fields & methods
* Better scoping (no more stack): []*_scope => _scope.outer
* Some speed improvements
In preparation for #66
2014-05-27 22:05:35 -07:00
Robert Krimen
b7dd9df181
Fix array-like handling in JSON.stringify
...
This fixes #73
2014-05-24 10:05:10 -07:00
Robert Krimen
ba678bc782
Use _runtime.toValue() instead of func toValue()
...
This fixes #72
2014-05-22 20:39:27 -07:00
Igor Kharin
1864a88fa0
Implement strings without value16
...
This fixes #68
Some changes over the original patch, removing references to utf8string.String:
* (better) This removes a dependency on a non-standard (though solid) package
* (better) utf8string.String has mutable parts
* (worse) utf8string.String has a smarter consecutive access approach (by
remembering where the last access was)
* (?) _stringWide allocates a []rune if charAt or charCodeAt access is needed (though
it will only do this once for the string object)
2014-05-18 12:38:15 -07:00
Robert Krimen
6d506b4b2f
Update documention to mention natto
2014-04-26 22:49:27 -07:00
Robert Krimen
058fe32c29
terst
2014-04-26 22:19:01 -07:00
Robert Krimen
70f432f8d5
terst
2014-04-26 11:52:14 -07:00
Robert Krimen
a15d66ea64
Fix missing interrupt
2014-04-25 23:04:44 -07:00
Robert Krimen
470b8c3b73
terst
...
* Update to latest github.com/robertkrimen/terst
* Clean up testing
2014-04-25 22:48:25 -07:00
Robert Krimen
bf7b16f4a3
Add internal compilation step
...
* Streamline what we get from "otto/parser"
* Get rid of some "otto/parser" cruft
* FunctionExpression => FunctionLiteral
* The debugger statement (debugger) should do nothing (not panic)
* Fix aspects of function expression call evaluation
2014-04-19 14:05:51 -07:00
Robert Krimen
0917510923
Fix delete ... triggering property get()
2014-04-19 11:11:53 -07:00
Robert Krimen
8aca2c886a
Disable script marshalling/unmarshalling for now
2014-04-15 18:34:24 -07:00
Robert Krimen
142951ac5a
Add Script marshalling/unmarshalling
2014-04-13 19:47:23 -07:00
Robert Krimen
9561f66959
Tighten test comparisons instead of squashing everything to a string
2014-04-13 18:09:46 -07:00
Robert Krimen
7721396b67
Fix Date tests to always mock UTC
2014-04-13 15:07:29 -07:00
Robert Krimen
ddca88af9b
Add compilation (Script, vm.Compile, etc.)
2014-04-13 15:04:32 -07:00
Robert Krimen
7163cd7841
Skip unexported fields, begin json.Marshaler support
...
* The "reflect" package is willing to expose unexported fields in structs (a little suprising).
* Skip unexported fields when enumerating or trying to access (pretend they don't exist).
* Allow structs that implement json.Marshaler to work as expected in a JSON.stringify call.
If we let the runtime try to access unexported fields, it'll cause a panic.
This fixes #64
2014-04-12 11:53:04 -07:00
Robert Krimen
ba4c8b0769
Fix documentation
2014-04-11 18:23:34 -07:00
Robert Krimen
9d7eadf70f
Simplify the commandline client (otto)
2014-04-11 18:13:46 -07:00
Robert Krimen
f04cfab02d
Add ability to parse []byte, *bytes.Buffer, io.Reader
2014-04-11 18:07:57 -07:00
Robert Krimen
6e3ed1b99d
Tighten test comparisons instead of squashing everything to a string
2014-04-11 18:06:18 -07:00
Robert Krimen
029f0bbd63
Fix parseInt if ErrRange occurs (fallback to float64)
2014-04-11 18:05:54 -07:00
Robert Krimen
ad8a97c028
New parser
...
* Faster, more straightforward, etc.
* More advanced object literals (get ..., set ...)
* More tests using JavaScript from the wild (http://cdnjs.com/ )
2014-04-10 20:42:25 -07:00
Robert Krimen
ec106f69e0
Add Object.Keys()
...
This fixes #62
2014-04-03 18:25:53 -07:00
Robert Krimen
0c82879349
Stop checking against 1.0.3 for release
2014-03-16 09:05:28 -07:00
Daniel Cannon
07737f86b9
Add ability to call struct methods
...
This fixes #60
This is incompatible with go 1.0.3
2014-03-16 09:04:00 -07:00
Daniel Cannon
661a61c5a0
Fix toValue not properly converting type aliases
...
This fixes #61
2014-03-16 08:46:20 -07:00
Robert Krimen
6f0e24ae2d
Fix Array.prototype.reduce, .reduceRight
...
Fix false-positives in underscore testing
Fix test (missing document because we're not in a browser)
2014-03-13 22:39:17 +01:00
Robert Krimen
73cdc7031e
newnewNode => newNewNode
2014-02-21 23:06:20 -08:00
Robert Krimen
aef9bfcb9a
Fix "memory leak" by gelcapping panic values with _exception
...
Basically, the Go runtime sees the gelcap shell of the exception,
which dissolves (payload is set to nil) once we catch the error.
This prevents the Go runtime from hanging onto a heavy object for the
panic log (or whatever it is doing with the panic value).
This fixes #59
2014-02-21 18:24:07 -08:00
Robert Krimen
1f3aef2086
Fix Date.prototype.setTime
...
This fixes #58
2014-02-18 20:37:54 -08:00
Robert Krimen
e01dde79ed
More tests for .Copy()
...
This fixes #57
2014-02-16 21:41:16 -08:00
Robert Krimen
70e6bec5e0
Make sure to set the Otto/runtime dependency when copying
...
This is a problem in #57
2014-02-16 21:22:30 -08:00
Robert Krimen
2ea54739df
terst
2014-02-16 11:07:10 -08:00
Robert Krimen
5aa653244a
Fix Put to see set/get properties
2014-02-15 10:20:33 -08:00
Robert Krimen
333bb23c07
Guard against _nilGetSetObject sneaking in
2014-02-14 23:23:39 -08:00