1
0
mirror of https://github.com/robertkrimen/otto synced 2025-10-12 20:27:30 +08:00
Commit Graph

753 Commits

Author SHA1 Message Date
Conrad Pankoff
1704aa9869 Merge pull request #119 from flowlo/patch-1
Fix README: s/windows/window/
2015-12-01 15:03:13 +11:00
deoxxa
33ac8bd28a fix parsing of statements like new a["b"] 2015-11-02 16:13:03 +11:00
Dmitry Panov
432b4361a7 Fixed TypeError message when evaluating a.b["c"] where a.b is undefined. 2015-10-15 21:07:43 +01:00
zupa
0b15bb491a Fix missing filename in compile-time error 2015-08-02 10:39:24 +02:00
Ernest Micklei
a05ab134d2 Merge remote-tracking branch 'upstream/master' 2015-08-02 10:30:24 +02:00
zupa
8a2b09b14d Fix missing filename in compile-time error 2015-06-26 18:46:52 +01:00
Robert Krimen
47082f4308 Look for less than 0, not just -1
This fixes #116
2015-06-10 22:48:44 -07:00
Robert Krimen
7597815bd0 Fix toReflectValue(0) => float32
This fixes #123
2015-05-07 22:53:02 -07:00
Lorenz Leutgeb
aa1f243099 Fix README: s/windows/window/ 2015-04-11 19:51:25 +02:00
Dmitry Panov
9d3cca217b Fixed error position for "Cannot access member '%s' of %s" 2015-04-04 14:27:24 +01:00
Dmitry Panov
1e5ee63535 Fixed stacktrace positions. 2015-04-01 21:03:24 +01:00
Tim Cooper
d1b4d8ef0e Fix Go map iteration when looping over non-string keys 2015-03-01 16:44:54 -08:00
Ernest Micklei
81094c6e94 add unit test for FunctionCall CallerLocation() 2015-03-01 21:17:39 +01:00
Ernest Micklei
9919b73823 add CallerLocation to FunctionCall 2015-03-01 08:49:14 +01:00
Dmitry Savintsev
b487603abe minor spacing changes for gofmt compliance 2015-02-25 21:48:07 +01:00
Steven Hartland
1b2cc7f8c1 Merge pull request #7 from stevenh/call-params
Improve method call parameter processing
2015-02-19 14:08:14 +00:00
Steven Hartland
a30a6a7b53 Improve method call parameter processing
Add support for the final parameter to a variadic function to be a slice.

Add support for conversion of slice parameters.

Expand numeric conversion support to include all int and uint types as souce types. This allows the result of bitwise calculations (int32) to be passed in as parameters.
2015-02-19 11:45:35 +00:00
Steven Hartland
37d35189e7 Merge pull request #8 from stevenh/float-precision
Float precision
2015-02-19 11:36:50 +00:00
Steven Hartland
abcc601db6 Prevent loss of float precision
When automatically converting a float to int type ensure we don't loose any precision.
2015-02-19 11:33:21 +00:00
Steven Hartland
9cb5e6bc30 Merge pull request #6 from stevenh/array-types
Export arrays to common type if possible
2015-02-19 11:08:22 +00:00
Steven Hartland
72d92c8e19 Export arrays to common type if possible
If there is a common type for all values in an array export to a slice of that type otherwise return a slice of interfaces.
2015-02-17 23:18:23 +00:00
Robert Krimen
c2346f4ada Merge pull request #103 from multiplay/multi-return
Support go multiple return values as an array
2015-02-15 16:28:43 -08:00
Robert Krimen
fa043cd6a1 Merge pull request #104 from multiplay/numeric-params
Automatic numeric parameter conversion
2015-02-15 16:13:10 -08:00
Steven Hartland
bbce143912 Merge pull request #1 from stevenh/numeric-params
Automatic numeric parameter conversion
2015-02-12 15:51:20 +00:00
Steven Hartland
4066dcefa9 Merge pull request #2 from stevenh/multi-return
Support go multiple return values as an array
2015-02-12 15:51:07 +00:00
Steven Hartland
b37428d05b Merge pull request #3 from stevenh/arg-processing
Fix argument processing for call
2015-02-12 15:50:57 +00:00
Steven Hartland
c25bb49761 Automatic numeric parameter conversion
Javascript uses int64 (literals) and float64 (default) representations for numbers so to allow easy use of go funcs apply automatic conversion for function parameters where it is safe to do so.
2015-02-12 15:48:45 +00:00
Steven Hartland
40ef8d9463 Fix argument processing for call
Fix toValueArray causing "missing runtime" errors due to use of toValue instead of self.toValue which causeed issues with passing values to Otto.Call(...).
2015-02-12 15:11:55 +00:00
Steven Hartland
81b01b9fac Support go multiple return values as an array
Add support for go funcs which return multiple values by returning them as an array.

In the future this can be used along side destructuring assignment to provide a nice way to deal with multiple value returns e.g.
[val, err] = MyGoFunc()
2015-02-12 15:10:58 +00:00
Andy Davis
0467f16538 add tests demonstrating the different behavior from Call & Run 2014-07-30 14:15:38 -05:00
Tim Jurcka
f7dbb7c5b3 Merge branch 'master' into issue86
Conflicts:
	bug_test.go
2014-07-03 10:43:52 +02:00
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