Nicholas Wiersma
f19b7563ea
feature: unsafe type conversion
2020-06-18 18:14:03 +02:00
Nicholas Wiersma
36836cd4f2
fix: return correct package name for parsed package ( #679 )
...
Co-authored-by: Marc Vertes <mvertes@free.fr >
2020-06-10 12:17:10 +02:00
mpl
5d56bac8d0
interp: extend dot debugging
2020-05-26 22:38:03 +02:00
Marc Vertes
7eac6955b3
feature: pre-import used packages in REPL mode.
2020-05-04 16:18:05 +02:00
Dan Kortschak
3548c8744e
interp: weaken panics to errors and return panicked values
2020-02-25 13:12:05 +01:00
Marc Vertes
27520f6dae
fix: re-apply GTA until all global types/constants are defined
2020-02-20 12:44:04 +01:00
Marc Vertes
902af477b8
fix: correct behavior for rune and byte types
2020-02-09 05:18:04 +01:00
Marc Vertes
e434892b9a
fix: import different source packages with same base name
2020-02-03 17:22:04 +01:00
Marc Vertes
773147ef71
fix: properly align atomic counters
2019-11-08 00:34:04 +01:00
Dan Kortschak
714253c1e6
interp: add eval cancelation by semaphore
2019-10-29 16:18:04 +01:00
Marc Vertes
de5a6e1038
feature: rename exported func Repl into REPL
2019-10-08 23:54:04 +02:00
Dan Kortschak
398b0e0255
interp: use io.Reader and io.Writer for REPL parameters
2019-10-08 17:34:05 +02:00
Marc Vertes
e03016b6d7
feature: detect import cycle
2019-09-17 01:32:03 +02:00
Marc Vertes
9e664ee8dd
fix: global variable init from selector expression
2019-09-16 14:30:05 +02:00
Marc Vertes
3645904a15
fix: correct resolve of type and symbols from imported source package
2019-09-11 12:30:05 +02:00
Marc Vertes
2f0279f0f5
fix: reuse rather than re-import an already imported source package
2019-09-09 15:54:05 +02:00
Marc Vertes
869b6d2850
fix: iterate on global type analyis when necessary ( #335 )
2019-08-22 17:36:23 +02:00
Ludovic Fernandez
458e8e911a
interp/build: support custom build constraints.
2019-07-31 09:00:05 -07:00
Ludovic Fernandez
aa98e2c2a9
feat: support yaegi in go playground
2019-07-24 17:52:03 -07:00
Ludovic Fernandez
dea1f56f38
refactor: use struct to define interpreter Options. ( #236 )
2019-07-03 19:46:17 +02:00
Marc Vertes
c991e09ca6
fix: correct handling of assign from multiple return func in REPL ( #233 )
2019-07-01 03:44:13 +02:00
Marc Vertes
274c0fc47a
chore: API and code cleanup. Rename stdlib.Value into stdlib.Symbols ( #231 )
2019-06-27 12:40:04 +02:00
Marc Vertes
cc8e05d61b
chore: cleanup API, unexport internal constants, types and variables. ( #229 )
2019-06-24 16:24:47 +02:00
Marc Vertes
025e4f924a
fix: correct handling of equality tests ( #205 )
2019-06-05 09:50:44 +02:00
Marc Vertes
cc2d122cd3
fix: correct negate operator ( #199 )
2019-05-31 12:48:46 +02:00
Marc Vertes
557a02d616
perf: better handling of return values in func calls ( #193 )
2019-05-27 12:21:03 +02:00
Marc Vertes
eb705baa01
fix: implement a single interface wrapper for error type ( #190 )
2019-05-21 16:49:26 +02:00
Marc Vertes
16690838e3
fix: correct handling of multi-assign operations, including swap ( #173 )
2019-05-01 16:25:31 +02:00
Marc Vertes
37f93f0392
fix: correct embedded method handling on hybrid struct ( #162 )
2019-04-19 18:30:04 +02:00
Marc Vertes
8910769b77
feat: functional options to New() ( #149 )
2019-04-05 21:36:48 +02:00
Marc Vertes
10a8312d2c
feat: check build constraints in filenames and comments ( #144 )
2019-04-02 15:51:44 +02:00
Marc Vertes
cac2a2c547
refactor: define fset in Interpreter rather than Node struct ( #141 )
2019-03-22 10:34:52 +01:00
Fernandez Ludovic
12b608b625
chore: rename to yaegi.
2019-03-20 10:15:35 +01:00
Marc Vertes
68d7890775
feat: add support for builtins complex, real and imag ( #128 )
2019-03-19 13:41:34 +01:00
Marc Vertes
8717f1ef4b
fix: correct append with variadic parameters and spread array ( #124 )
...
* fix: correct append with variadic parameters and spread array
* feat: add print builtin
2019-03-19 12:25:04 +01:00
Marc Vertes
70fab221de
feat: add support for builtin delete ( #127 )
2019-03-19 12:14:44 +01:00
Marc Vertes
b8927e3ca6
feat: add support for builtin copy ( #126 )
2019-03-19 01:19:43 +01:00
Marc Vertes
a1bfe7c989
feat: add support for builtin new ( #125 )
2019-03-19 01:12:25 +01:00
Marc Vertes
1ccc36a690
feat: implement support of 'for x := range channel' expression ( #119 )
2019-03-16 18:36:44 +01:00
Marc Vertes
5a10046944
feat: simplify Use() ( #115 )
...
Change API from
func Use(val libValueMap, typ libTypeMap)
to
func Use(val libValueMap)
2019-03-13 12:24:59 +01:00
Marc Vertes
6657e9a18b
feat: add support for named output variables ( #113 )
...
* feat: add support for named output variables
Function output parameters are located at the start of the function
frame, uninitialized, as they could be only set through return
statements.
Supporting named output variables requires to:
- identify and allocate symbols corresponding to output names:
done at ident parsing, with the funcRet() helper,
- compute the location of output name in the frame:
done with retRank() helper,
- initialize the frame entry with the zero value of symbol type,
as the symbol can be accessed and written at multiple times,
and return not setting the variable (opposite to unnamed).
Done with frameType() helper, which now takes into account
output parameters.
* refactor: simplify memory management
Perform function frame analysis at pre-order, instead of post-order, to
initialize memory frame, and track value types. Remove all operation
involving unitialized types. Frame memory layout is now build
incrementally, instead of having to perform dedicated tree walks on AST.
2019-03-12 19:58:02 +01:00
Marc Vertes
005a3cf93c
fix: catch mismatched types in binary operator expressions ( #109 )
...
The types of operands are checked prior to generate closures.
- test: improve evalCheck() to check against expected output and/or expected errors.
2019-02-26 11:08:57 +01:00
Marc Vertes
32e0be8b4e
fix: improve use of explicit nil ( #96 )
...
Type category `UnsetT` is renamed in `NilT`.
Catch invalid use of untyped nil in `:=` expression.
Convert nil to output parameter type when used in `return` expression.
Improve and add relevant unit tests.
2019-02-20 15:44:44 +01:00
Marc Vertes
5677e0501e
fix: correct propagation of values during eval ( #95 )
...
Eval returns the value of the root node of AST, so ensure
that node values are propagated back to ExprStmt and BlockStmt,
which should be sufficient to handle evaluation of simple
statements.
2019-02-19 14:51:44 +01:00
Marc Vertes
ef83e43bd7
feat: complete handling of switch case statements ( #88 )
2019-02-11 18:42:00 +01:00
Marc Vertes
6d21cefe75
fix: allow imported binary variables to be set ( #85 )
...
Change the way imported binary variables are imported, from
`reflect.ValueOf(val)` to `reflect.ValueOf(&val).Elem()`, to allow these
variables to be set from the interpreter.
Regenerate stdlib packages accordingly.
Ensure that binary value is forwarded if it exists.
Add tests.
2019-02-07 15:41:22 +01:00
Ludovic Fernandez
3f0e693383
refactor: support imports/package/vendor. ( #41 )
...
* test: adds tests about package and vendor.
* refactor: support imports/package/vendor.
* review.
2019-01-24 16:16:49 +01:00
Ludovic Fernandez
ed93935c93
refactor: custom GOPATH. ( #32 )
2019-01-23 13:04:19 +01:00
Ludovic Fernandez
ff4e9b1918
fix: typo. ( #31 )
2019-01-23 09:50:44 +01:00
Marc Vertes
2ef097e334
feat: better error handling in type parsing ( #24 )
...
When parsing types, instead of panic, set proper error and diagnostic with source location.
Propagate errors correctly.
2019-01-21 22:03:40 +01:00