Rafal Kupiec
4eaf6a7117
AerScript is strict type hinting language, thus OP_TEQ & OP_TNE are not needed here.
2019-04-11 06:25:20 +02:00
Rafal Kupiec
2a4e47e782
I hope this finally fixes the default argument value.
2019-04-10 18:32:53 +02:00
Rafal Kupiec
95c9fd0f1f
Corrections in builtin library.
2019-04-10 12:44:44 +02:00
Rafal Kupiec
d8f9db8f9a
Proper implementation of is_callback() & is_callable(). First one only performs a check if variable type is callback, while the second checks if function exists and if can be called.
2019-04-10 09:45:00 +02:00
Rafal Kupiec
65e38a364d
Do not try to call an array.
2019-04-10 09:26:06 +02:00
Rafal Kupiec
d6434ba19e
Try to report some line.
2019-04-10 09:18:26 +02:00
Rafal Kupiec
447910ce2e
Fix callbacks.
2019-04-10 09:08:10 +02:00
Rafal Kupiec
77795bea4c
Do not check for return value on OP_DONE.
2019-04-08 13:51:54 +02:00
Rafal Kupiec
598dc9ce51
At least try to call callback and do not check for return value on OP_DONE.
2019-04-08 13:49:12 +02:00
Rafal Kupiec
7443663dd8
Fixes in PH7_OP_LOAD_IDX instruction.
2019-04-06 09:36:08 +02:00
Rafal Kupiec
f6e2b549b6
Access to undefined array index should be reported as error.
2019-04-06 09:21:09 +02:00
Rafal Kupiec
a501dea661
Fix a typo.
2019-04-05 20:17:44 +02:00
Rafal Kupiec
25001ae746
This should be an error, really.
2019-04-05 20:14:08 +02:00
Rafal Kupiec
2de455aa01
Fix formatting.
2019-04-05 20:12:55 +02:00
Rafal Kupiec
95fba30f9b
Better way to check arguments compatibility.
2019-04-05 20:07:56 +02:00
Rafal Kupiec
a06573408e
Better way to check arguments compatibility.
2019-04-05 19:59:15 +02:00
Rafal Kupiec
5d369ba851
Fix static variables. Now access to non-initialized arrays member does not result in segmentation fault.
2019-04-04 18:18:11 +02:00
Rafal Kupiec
9880f9963e
Fix static and non-static class attributes. Now access to non-initialized arrays member does not result in segmentation fault.
2019-04-04 18:15:41 +02:00
Rafal Kupiec
7ec7ade171
Return a character from string if it is not ar array.
2019-04-04 11:51:25 +02:00
Rafal Kupiec
01c210984e
Further optimisations.
2019-04-03 13:57:29 +02:00
Rafal Kupiec
5eeceb6927
Try to optimize the code a bit.
2019-04-03 13:43:31 +02:00
Rafal Kupiec
4467ca6dce
Attempt to fix static variables.
2019-04-03 09:02:49 +02:00
Rafal Kupiec
5463da88b0
Attempt to fix non-static class attributes.
2019-04-03 08:32:59 +02:00
Rafal Kupiec
d4d00db458
Attempt to fix static class attributes.
2019-04-03 07:00:17 +02:00
Rafal Kupiec
8133c3dd6f
Make a use of PH7_MemObjSafeStore().
2019-04-03 06:37:35 +02:00
Rafal Kupiec
fb50d8de25
Correct the comment.
2019-04-02 20:10:58 +02:00
Rafal Kupiec
803516cf84
This will never happen.
2019-04-02 15:12:22 +02:00
Rafal Kupiec
c6397d2e15
Use P2 to avoid strict typehinting.
2019-04-02 09:55:01 +02:00
Rafal Kupiec
253fe327ef
Automatically fallback mixed variable to void (NULL).
2019-03-31 14:04:19 +02:00
Rafal Kupiec
3f205c19ce
Get rid of dirty references. Return a reference & pass-by reference are still working.
2019-03-29 22:55:49 +01:00
Rafal Kupiec
f5960d57b1
Allow static class attributes to store compatible data types only.
2019-03-29 19:56:10 +01:00
Rafal Kupiec
01f1932230
Respect the class attribute data type.
2019-03-29 09:21:58 +01:00
Rafal Kupiec
47cca096bc
Fix segmentation fault when trying to access array element.
2019-03-29 09:09:51 +01:00
Rafal Kupiec
140bd35f93
Set proper type for all class attributes.
2019-03-29 09:00:55 +01:00
Rafal Kupiec
a013cee2d1
Properly serve the arrays.
2019-03-28 19:44:03 +01:00
Rafal Kupiec
e4dc9f641e
Invert the logic. Variable needs to be declared.
2019-03-28 19:43:00 +01:00
Rafal Kupiec
9303517b9e
Fix return by reference.
2019-03-26 17:40:28 +01:00
Rafal Kupiec
04c56c9041
Multidimensional array of the same type should not be marked as mixed.
2019-03-25 09:37:40 +01:00
Rafal Kupiec
fa295b9437
It's callback, not callable.
2019-03-24 09:31:19 +01:00
Rafal Kupiec
4f29507c0d
The isset() function always results in true, thus it is useless. If passed as argument variable is not set, the interpreter will throw an error.
2019-03-23 19:51:19 +01:00
Rafal Kupiec
9d7a542aea
The is_null() is useless now, as it always returns FALSE.
2019-03-22 19:29:50 +01:00
Rafal Kupiec
154469f475
Variable cannot be typecasted to NULL.
2019-03-22 18:33:39 +01:00
Rafal Kupiec
9a41f7195d
AerScript does not implement any error control operator.
2019-03-22 17:32:40 +01:00
Rafal Kupiec
65b178932a
Get rid of array() & list() for the new syntax.
2019-03-22 15:54:46 +01:00
Rafal Kupiec
90b5a8797a
Fix a bug allowing to pass an array as argument to the method/closure that takes a scalar.
2019-03-22 08:59:12 +01:00
Rafal Kupiec
7b1ed59f41
Basic check if all methods declared in interface are also defined in class.
2019-03-20 09:24:30 +01:00
Rafal Kupiec
3d23d43040
Enable garbage collector for Program class. This also partially fixes #47 , as from now Program::__destruct() will be called automatically.
2019-03-19 12:52:36 +01:00
Rafal Kupiec
6ca08c9c4a
Fix typo and builtin library.
2019-03-17 19:57:31 +01:00
Rafal Kupiec
55b652c740
Verify that Program::main() returns a value of int or void.
2019-03-17 19:56:07 +01:00
Rafal Kupiec
fe898ec7e7
Update builtin library to follow new syntax.
2019-03-17 19:52:28 +01:00
Rafal Kupiec
9934489ed9
Fix build.
2019-03-17 18:56:17 +01:00
Rafal Kupiec
f3d10dd4bc
Try to exit with code returned by Program::main() only when it is integer value.
2019-03-17 18:49:22 +01:00
Rafal Kupiec
de2b355862
Return 0, when display error message.
2019-03-17 18:47:17 +01:00
Rafal Kupiec
c8985032ef
Verify that return value match the data type of declared method/closure.
2019-03-13 09:36:10 +01:00
Rafal Kupiec
a5ee2d75eb
PH7_VmMemoryError() always breaks script execution.
2019-03-09 13:37:15 +01:00
Rafal Kupiec
b7e3ad9f46
PH7_VmMemoryError() always breaks script execution.
2019-03-09 13:28:04 +01:00
Rafal Kupiec
7eba38a633
Fix segmentation fault when trying to store a value under next index into an array.
2019-03-09 13:25:13 +01:00
Rafal Kupiec
fa0b487cc0
Implement typecasting to resource data type.
2019-02-08 14:06:39 +01:00
Rafal Kupiec
bbdc740388
Finally, do not allow a string variables to act as callback.
2018-12-20 19:37:03 +01:00
Rafal Kupiec
f97e2a8294
Implement typecasting to callback data type.
2018-12-20 18:30:21 +01:00
Rafal Kupiec
d87ce3ad1d
1. Set a proper data type when compiling closure.
...
2. Temporarily allow to call a closure/function if its name is stored in a variable of callback or string type. Ultimately, only callback will be allowed.
2018-12-01 12:53:58 +01:00
Rafal Kupiec
3f9e3b0664
Check for compatible data types on OP_CALL & OP_STORE.
2018-11-28 21:58:41 +01:00
Rafal Kupiec
d65a529d21
Initial support for char data type.
2018-11-26 20:37:51 +01:00
Rafal Kupiec
174ecb2a38
Initial support for void type.
2018-11-23 09:19:37 +01:00
Rafal Kupiec
87db6d6dfd
Allow a method/closure to take compatible mixed variable as argument.
2018-11-18 22:06:40 +01:00
Rafal Kupiec
6f13c347d8
Set the proper type of array.
2018-10-26 19:45:10 +02:00
Rafal Kupiec
c00080e190
Correct comment.
2018-09-24 19:20:23 +02:00
Rafal Kupiec
b5eb268ce1
Do not allow to set a value of different type to the variable.
2018-09-24 19:17:46 +02:00
Rafal Kupiec
5f2f9d9c08
Set proper data type for static variables;
2018-09-24 19:16:44 +02:00
Rafal Kupiec
369cadfcda
Tryeing to call a non-instantiated object should result in an error.
2018-09-24 12:10:19 +02:00
Rafal Kupiec
ae0fde152c
Create a variable only on OP_LOAD.
2018-09-23 17:40:26 +02:00
Rafal Kupiec
514e07c7f3
Fix static variables not containing any value.
2018-09-21 22:18:11 +02:00
Rafal Kupiec
f927667d85
Strictly check for data type of static variable declaration.
2018-09-21 22:06:36 +02:00
Rafal Kupiec
e6e59d299e
Fix method parameters.
2018-09-19 19:27:50 +02:00
Rafal Kupiec
5a6af65cfa
Object of wrong type passed as argument should be generate error.
2018-09-17 22:06:53 +02:00
Rafal Kupiec
82998ffd0f
Silently typecast integer value to float.
...
This is a necessary step, to allow passing integer numbers. Otherwise, every float variable would need a floating point value. In other words, "float $x = 5" is allowed construct. Without this simple change, only accepted
construction was "float $x = 5.0".
2018-09-16 20:02:34 +02:00
Rafal Kupiec
58103ea5fe
Mark method/closure call frame as active.
...
It is impossible to dump the frame during its initialization, as it does not contain all necessary information. Such frame should be skipped. After initialization is done, the frame has to be marked as active just before
evaluating a function body.
2018-09-16 19:52:24 +02:00
Rafal Kupiec
3a16eced8a
Push error if argument type does not match.
2018-09-15 14:13:46 +02:00
Rafal Kupiec
5504579566
Passing an object of different type as expected should result in error.
2018-09-14 22:27:38 +02:00
Rafal Kupiec
faca9b7fb2
Another fix in debug trace.
2018-09-14 22:22:37 +02:00
Rafal Kupiec
ecebbb6094
Use type hinting in standard library.
2018-09-14 08:36:00 +02:00
Rafal Kupiec
58b7ceeae9
Get rid of $GLOBALS completely.
2018-09-11 17:49:20 +02:00
Rafal Kupiec
e383536dc4
Do not store script arguments in $GLOBALS.
2018-09-11 06:47:48 +02:00
Rafal Kupiec
9ebc3dc61a
Extract a list of parameters and pass them to Program::main();
2018-09-10 23:12:08 +02:00
Rafal Kupiec
eb79ed500e
Store float values in an union.
...
Single variable cannot have many values of different types. This also saves some memory, because union allocates memory just for one of its members.
2018-09-07 12:04:51 +02:00
Rafal Kupiec
af1d59dab4
Don't try to get an integer representation of float.
2018-09-07 06:49:50 +02:00
Rafal Kupiec
43a36f070c
Correct comments.
2018-09-06 18:00:34 +02:00
Rafal Kupiec
3887aa69a6
Never disable hash functions.
2018-09-05 21:46:25 +02:00
Rafal Kupiec
00e1c842d5
Never disable builtin functions.
2018-09-05 20:43:39 +02:00
Rafal Kupiec
ea4daa9335
Take last instruction being executed, not necessarily OP_CALL.
2018-09-05 19:45:38 +02:00
Rafal Kupiec
6387026e15
Do not limit the output buffering callbacks.
2018-09-05 18:46:42 +02:00
Rafal Kupiec
11ba0ce738
No need to store output length in VM.
2018-09-05 18:33:53 +02:00
Rafal Kupiec
404f5a2688
No need to store unique ID in VM.
2018-09-05 18:24:34 +02:00
Rafal Kupiec
894dbe47d6
Allow compiler to specify line number, on which instruction has been generated.
...
This also fixes line number on OP_CLASS_INIT and OP_INTERFACE_INIT.
2018-09-05 17:31:06 +02:00
Rafal Kupiec
543176a2f4
Switch VM state to PH7_VM_INCL when including new file.
2018-09-05 13:28:20 +02:00
Rafal Kupiec
d58249cb3f
Use debug trace only if VM is really executing some code.
2018-09-05 13:16:57 +02:00
Rafal Kupiec
d793d3ed70
Rename PH7_VmGenericError() to PH7_VmThrowError()
2018-09-04 08:54:48 +02:00
Rafal Kupiec
758ace0d1a
Shutdown library properly on error.
2018-09-04 08:49:38 +02:00
Rafal Kupiec
dc0a55c8c0
Cleanup old error handler.
2018-09-04 08:38:41 +02:00
Rafal Kupiec
ac73632cb1
Use new error handler.
2018-09-04 08:26:58 +02:00