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