Rafal Kupiec
bd22425b46
Do not allow 'continue' statement in a switch case.
...
Important rule while using continue statement is that, We can use continue
statement only within the loops. Switch case is conditional block not a loop
so we cannot execute the continue statement inside switch.
2019-04-17 11:13:29 +02:00
Rafal Kupiec
9d97eb228a
Test a for() loop as well.
2019-04-17 11:07:53 +02:00
Rafal Kupiec
b668d0a897
Test do { ... } while(); loop.
2019-04-17 11:01:34 +02:00
Rafal Kupiec
102e8447a1
Formatting code.
2019-04-17 10:08:03 +02:00
Rafal Kupiec
5f57ba54a4
Left operand must be modifiable when storing some value.
2019-04-17 08:59:42 +02:00
Rafal Kupiec
ec580ddf8c
Path splitting test.
2019-04-17 08:32:19 +02:00
Rafal Kupiec
395f6c446c
Get rid of known from PHP 'elseif' construction.
2019-04-17 07:55:32 +02:00
Rafal Kupiec
549b2ff3b4
Do not use 'elseif' construction.
2019-04-17 07:49:22 +02:00
Rafal Kupiec
e5d7977995
Fixed by implementation of OP_JMPLFB & OP_JMPLFE VM instructions.
2019-04-16 20:25:38 +02:00
Piotr Likoski
6b18e204cd
Always pop the l-value on variable declaration.
...
Otherwise, it might lead to unexpected behaviour including protected memory access and segmentation fault.
This finally fixes #49 .
2019-04-16 20:15:38 +02:00
Rafal Kupiec
a5da714d61
Test while loop.
2019-04-16 19:31:24 +02:00
Rafal Kupiec
88d382b76b
Add missing VM OP descriptions.
2019-04-16 19:12:39 +02:00
Rafal Kupiec
2894c55dfa
Add some comments, to see if they are working.
2019-04-16 15:08:08 +02:00
Rafal Kupiec
0b11d59f9f
Remove this dirty hack.
...
This test should now work without it.
2019-04-16 13:59:10 +02:00
Rafal Kupiec
07e3a09999
Enter and leave a loop frame on every iteration.
...
This fixes strict variable declaration inside loops.
2019-04-16 13:51:58 +02:00
Rafal Kupiec
ba8e9080ef
Implement OP_JMPLFB & OP_JMPLFE VM instructions.
2019-04-16 12:46:58 +02:00
Rafal Kupiec
ef4f994e8b
Do not allow 'break' statement to take a parameter. This is strange construction introduced in PHP.
2019-04-16 12:34:53 +02:00
Rafal Kupiec
5fddbf8737
Do not allow 'continue' statement to take a parameter. This is strange construction introduced in PHP.
2019-04-16 12:32:01 +02:00
Rafal Kupiec
89f19133d5
Rename VM's jump instructions for better readability.
2019-04-16 08:14:16 +02:00
Rafal Kupiec
eb80dced3e
Correct comment.
2019-04-15 20:00:54 +02:00
Rafal Kupiec
f9b518138e
Cleanup OP_LOAD instruction.
2019-04-15 19:44:49 +02:00
Rafal Kupiec
517dffcbc1
Separate VM instruction for variable declaration (OP_DECLARE).
2019-04-15 19:18:29 +02:00
Rafal Kupiec
1b248a17e7
Query the top active as well as all loop frames.
2019-04-15 18:32:30 +02:00
Rafal Kupiec
661158d249
Simply throw memory error.
2019-04-15 17:41:29 +02:00
Rafal Kupiec
94e06f3d3a
Do not duplicate the code; make a use of VmCreateMemObj().
2019-04-15 17:14:14 +02:00
Rafal Kupiec
9e06322b57
Implement VmCreateMemObj().
2019-04-15 17:04:44 +02:00
Rafal Kupiec
0f0fc01a96
We need to distinguish the loop frames.
2019-04-13 20:21:47 +02:00
Rafal Kupiec
c51b3dfa8a
Revert 89d5158d7e
and a8a1a2cd51
. Fix should be based on VM frames.
2019-04-13 14:39:57 +02:00
Rafal Kupiec
583f43e1f7
Convert carriage return and line feed to line feed (UNIX line ending).
2019-04-13 14:37:04 +02:00
Rafal Kupiec
aea0d1a5ec
Workaround applied to make test working.
2019-04-13 14:35:27 +02:00
Rafal Kupiec
e3ad3eb84b
Another bug found that needs to be fixed before merge to master branch.
2019-04-13 14:32:43 +02:00
Rafal Kupiec
98898c16c5
Builtin library will be reworked later. Out of scope.
2019-04-13 09:09:25 +02:00
Rafal Kupiec
89d5158d7e
Fix build.
2019-04-11 13:31:17 +02:00
Rafal Kupiec
b302e8c2b2
Test static variables.
2019-04-11 13:29:44 +02:00
Rafal Kupiec
a8a1a2cd51
Fix variable declaration in loops.
2019-04-11 13:28:47 +02:00
Rafal Kupiec
ee0d189f0a
Add comments.
2019-04-11 11:37:07 +02:00
Rafal Kupiec
cdc0dade2a
Allow to store a character in string variable.
2019-04-11 11:33:00 +02:00
Rafal Kupiec
aae526b1d4
Closure as filter.
2019-04-11 09:10:03 +02:00
Rafal Kupiec
5cc803d07c
Another closure test comes in.
2019-04-11 08:58:54 +02:00
Rafal Kupiec
31f48b234b
This is already fixed.
2019-04-11 06:25:48 +02:00
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
9c426b20cc
Factory design pattern test.
2019-04-10 20:22:13 +02:00
Rafal Kupiec
725b60cb88
Check switch block.
2019-04-10 20:01:17 +02:00
Rafal Kupiec
0c2b2c9df5
Class instance as argument.
2019-04-10 19:54:05 +02:00
Rafal Kupiec
493fcd0e92
Test complex expressions one more time.
2019-04-10 19:41:48 +02:00
Rafal Kupiec
57c6b3483a
Test strtr() builtin function.
2019-04-10 19:18:39 +02:00
Rafal Kupiec
ab4705518c
Another script for interpreter testing.
2019-04-10 19:12:44 +02:00
Rafal Kupiec
08307c5ad6
Let's test exceptions.
2019-04-10 18:59:26 +02:00
Rafal Kupiec
2a4e47e782
I hope this finally fixes the default argument value.
2019-04-10 18:32:53 +02:00
Rafal Kupiec
527a6ad689
Mark argument as well as object, when class name is supplied.
2019-04-10 13:58:24 +02:00
Rafal Kupiec
95c9fd0f1f
Corrections in builtin library.
2019-04-10 12:44:44 +02:00
Rafal Kupiec
46250f0cd8
IP address encode/decode test.
2019-04-10 11:28:57 +02:00
Rafal Kupiec
ee7b1e56ae
Another test of closure.
2019-04-10 11:19:29 +02:00
Rafal Kupiec
a4b5db4005
Formatting.
2019-04-10 09:52:20 +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
6b86f4c855
Add assertion test.
2019-04-10 09:23:23 +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
f0e50678e3
Optimize the code a bit.
2019-04-10 08:52:06 +02:00
Rafal Kupiec
8810a86a2c
Fix for typoecasting callback to string.
2019-04-10 08:50:04 +02:00
Rafal Kupiec
b0165e5702
Do not reset blob when typecasting from string to callback.
2019-04-10 06:57:14 +02:00
Rafal Kupiec
77ebce7acf
Parser takes care about nested arrays.
2019-04-10 06:18:49 +02:00
Rafal Kupiec
c1e30d4c68
Another problem found.
2019-04-08 17:21:25 +02:00
Rafal Kupiec
ad3c6e6d7e
Closure event test.
2019-04-08 13:58:40 +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
d74b182235
Properly typecast callback to boolean.
2019-04-08 13:32:50 +02:00
Rafal Kupiec
b320d35cf7
Test char to int conversion.
2019-04-08 10:32:31 +02:00
Rafal Kupiec
c2b3cc1a2f
Test magic methods.
2019-04-08 10:24:32 +02:00
Rafal Kupiec
db0bbf713b
We need to fix callbacks.
2019-04-08 09:37:47 +02:00
Rafal Kupiec
580d1af308
More tests to go.
2019-04-08 09:31:58 +02:00
Rafal Kupiec
58b63a9f16
Another simple test.
2019-04-08 08:57:45 +02:00
Rafal Kupiec
67f40db553
Typehinting test.
2019-04-06 17:01:28 +02:00
Rafal Kupiec
1679420f4c
Get rid of some invisible escape characters.
2019-04-06 17:00:15 +02:00
Rafal Kupiec
d34c8ceafb
Fix void dump.
2019-04-06 16:51:32 +02:00
Rafal Kupiec
bda8316e1b
Add interface tests (OOP).
2019-04-06 16:02:20 +02:00
Rafal Kupiec
1fd161e394
This will be done in scope of ticket #48 .
2019-04-06 10:00:58 +02:00
Rafal Kupiec
246b097fad
Update TODO list.
2019-04-06 09:36:33 +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
72c420cc85
Correct another typo.
2019-04-05 20:21:26 +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
39f698476f
This is not the right way to go - revert 465336b23b
.
2019-04-05 12:30:38 +02:00
Rafal Kupiec
465336b23b
Mark void variable as well as NULL, and dump NULL as void.
2019-04-05 11:52:15 +02:00
Rafal Kupiec
a1151d598b
Do not emit warning when assigning NULL to resource.
2019-04-05 11:42:40 +02:00
Rafal Kupiec
5765ff3fd6
Additional tasks to be done.
2019-04-05 11:14:32 +02:00
Rafal Kupiec
3359b99128
Test complex expressions.
2019-04-05 09:43:07 +02:00
Rafal Kupiec
afe978e366
Test call by dereferencing array.
2019-04-05 09:22:47 +02:00
Rafal Kupiec
4d07a10336
One more callback test.
2019-04-05 09:13:29 +02:00
Rafal Kupiec
cfc0342a10
Let's test operators precedence.
2019-04-05 09:08:11 +02:00
Rafal Kupiec
62d8451d12
Add multiple inheritance test.
2019-04-05 08:52:30 +02:00
Rafal Kupiec
5bfa60724a
Add new test - brainfuck interpreter.
2019-04-05 08:07:06 +02:00
Rafal Kupiec
fcd4e8d6a6
The readdir() function should return empty string instead of false.
2019-04-05 07:54:47 +02:00
Rafal Kupiec
72dc44c152
Another fix for OP_DONE instruction.
2019-04-05 07:45:53 +02:00
Rafal Kupiec
74f954b852
Fix OP_DONE instruction.
2019-04-05 07:01:07 +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
c789b875f4
Description after problem investigation.
2019-04-04 12:29:52 +02:00
Rafal Kupiec
1db4fc0515
Another problem found so far, workaround applied in 7ec7ade171
.
2019-04-04 12:07:47 +02:00
Rafal Kupiec
dc44ee31b8
Add new test - luhn verification.
2019-04-04 11:53:50 +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
9acd6fbcb2
Do not typecast NULL to StdClass.
2019-04-03 09:34:32 +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
8d3b7f303f
Allow to assign any value if data type is not specified.
2019-04-03 08:11:55 +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
66a7e957c9
Allow to assign NULL to array.
2019-04-02 19:58:12 +02:00
Rafal Kupiec
aaef03396c
Implement PH7_MemObjSafeStore().
2019-04-02 19:44:09 +02:00
Rafal Kupiec
45b1d4ed73
Compare only non-array to non-array values.
2019-04-02 15:19:48 +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
2fb123872f
Typecas array only if it is of different type.
2019-04-02 09:05:27 +02:00
Rafal Kupiec
253fe327ef
Automatically fallback mixed variable to void (NULL).
2019-03-31 14:04:19 +02:00
Rafal Kupiec
629484fcf6
Make a use of NULL operator.
2019-03-30 19:52:51 +01:00
Rafal Kupiec
4f6be2234e
Allow NULL to be assigned to any type of variable. NULL will be automatically typecasted to any data type, thus setting ti the default value.
2019-03-29 23:51:20 +01:00
Rafal Kupiec
9b741175f2
Uppercase.
2019-03-29 23:17:50 +01:00
Rafal Kupiec
8a87dcbcdc
Not any longer.
2019-03-29 22:59:59 +01: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
a7137316f7
This also seems to be fixed already.
2019-03-29 19:59:17 +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
0f5073f3fb
Fix test.
2019-03-29 09:45:32 +01:00
Rafal Kupiec
41d20eeb28
Builtin library is broken; strtok() cannot return a boolean value.
2019-03-29 09:45:15 +01:00
Rafal Kupiec
f7b779907c
This is actually fixed.
2019-03-29 09:22:38 +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
66b55e35a9
Enable reference operator.
2019-03-28 07:58:53 +01:00
Rafal Kupiec
3fc002be18
More things to do ... again.
2019-03-27 11:02:09 +01:00
Rafal Kupiec
94bd82f251
Update TODO list.
2019-03-27 10:46:36 +01:00
Rafal Kupiec
874e416d65
Typo correction.
2019-03-27 09:50:24 +01:00
Rafal Kupiec
46a3bd85b0
Add function description.
2019-03-27 09:49:48 +01:00
Rafal Kupiec
d76e48c885
It is already integer.
2019-03-27 09:45:02 +01:00
Rafal Kupiec
14f958a4b2
Implement PH7_HashmapCast().
2019-03-27 09:42:23 +01:00
Rafal Kupiec
45f4a00b05
Revert 5e54233ef8
.
2019-03-26 17:41:32 +01:00
Rafal Kupiec
9303517b9e
Fix return by reference.
2019-03-26 17:40:28 +01:00
Rafal Kupiec
5e54233ef8
Check only non-array vriables.
2019-03-26 16:39:19 +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
fbf27a6c4c
One bug fixed, another found.
2019-03-24 13:52:56 +01:00
Rafal Kupiec
891818d601
Fix PH7_CheckVarCompat(). Array can be assigned only to array.
2019-03-24 13:33:15 +01:00
Rafal Kupiec
243faf4373
Header cleanup.
2019-03-24 09:38:52 +01:00
Rafal Kupiec
accde59f9e
Cleanup header.
2019-03-24 09:32:27 +01:00
Rafal Kupiec
fa295b9437
It's callback, not callable.
2019-03-24 09:31:19 +01:00
Rafal Kupiec
a87471e1e3
The empty() function is useless in Aer.
2019-03-24 09:22:10 +01:00
Rafal Kupiec
9438407ebf
Never store an element if there is no callback function specified.
2019-03-24 09:01:38 +01:00
Rafal Kupiec
731706c1a3
Another bug found.
2019-03-23 23:29:51 +01:00
Rafal Kupiec
e39bdae5b8
Fix test.
2019-03-23 23:25:00 +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
e75ed7b9a9
Only INTEGER and FLOAT should be considered as numerical.
2019-03-23 19:34:51 +01:00
Rafal Kupiec
0af594f1ed
Seems not so useful in AerScript.
2019-03-23 19:15:16 +01:00
Rafal Kupiec
3074b4efaf
Fix test.
2019-03-23 17:33:29 +01:00
Rafal Kupiec
fc95deffa0
Typecasting should be enough.
2019-03-23 17:25:18 +01:00
Rafal Kupiec
76e76983a3
Implement new builtin functions: is_char() and is_void().
2019-03-23 12:59:09 +01:00
Rafal Kupiec
ea93c8dba4
Fix typo.
2019-03-22 19:55:53 +01:00
Rafal Kupiec
ff6c71db1c
Do not use NULL if possible.
2019-03-22 19:53:12 +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
135e7c9698
VAR & FUNCTION are no longer valid keywords.
2019-03-22 18:47:46 +01:00
Rafal Kupiec
59e2743a60
Simply release the object, no need to use a wrapper function.
2019-03-22 18:42:46 +01:00
Rafal Kupiec
98a5fc1af0
No such operator.
2019-03-22 18:34:12 +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
e3122c9f89
Update TODO list.
2019-03-22 16:51:25 +01:00
Rafal Kupiec
65b178932a
Get rid of array() & list() for the new syntax.
2019-03-22 15:54:46 +01:00
Rafal Kupiec
59e820c768
No longer a problem.
2019-03-22 09:17:23 +01:00
Rafal Kupiec
3ebd6d62c4
Merge branch 'typehinting' of ssh://git.codingworkshop.eu.org:8822/AerScript/Aer into typehinting
2019-03-22 08:59:41 +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
78c6f6a376
Working as expected.
2019-03-22 06:25:47 +01:00
Rafal Kupiec
f83d6cc43d
New list of TODO things.
2019-03-21 17:46:25 +01:00
Rafal Kupiec
ab09ba6943
Tests should use new array syntax.
2019-03-21 17:33:40 +01:00
Rafal Kupiec
075d2f0963
Temporary workaround to allow the use of curly braces and array() syntax concurrently.
2019-03-21 17:30:08 +01:00
Rafal Kupiec
412a70c0c6
Allow the array to be defined inside curly braces, instead of using array() keyword.
2019-03-21 17:27:19 +01:00
Rafal Kupiec
a0d72d067c
Neither C++ does.
2019-03-21 09:17:08 +01:00
Rafal Kupiec
0115b30d01
Extension to PHP, standard in AerScript.
2019-03-21 06:19:27 +01:00
Rafal Kupiec
1460200919
This is true about PH7, but not about the AerScript.
2019-03-20 19:39:30 +01:00
Rafal Kupiec
24013f4a52
Correct project name.
2019-03-20 19:25:46 +01:00
Rafal Kupiec
166b1a2c41
This is not a bug.
2019-03-20 12:58:16 +01:00
Rafal Kupiec
4eba80b2ba
Update TODO list.
2019-03-20 09:32:38 +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
b60c1de4cf
Abort on SXERR_ABORT, #47 .
2019-03-19 10:42:53 +01:00
Rafal Kupiec
23601fe9c5
Partially fix #47 , static variables are still affected.
2019-03-19 10:38:07 +01:00
Rafal Kupiec
d6751484d0
Another bug found so far.
2019-03-18 12:26:21 +01:00
Rafal Kupiec
d4967da9e4
Some bugs found already.
2019-03-18 12:08:35 +01:00
Rafal Kupiec
c6d95c16d3
Fix typo.
2019-03-18 08:59:28 +01:00
Rafal Kupiec
fc3a66315b
These are already done.
2019-03-17 20:25:22 +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
ff73690111
Update tests to follow new syntax.
2019-03-17 19:48:52 +01:00
Rafal Kupiec
c26f8cd777
Strict data types for classes and interfaces:
...
1) New syntax for method declaration, now requiring a strict data type to be passed (i.e. void main()),
2) New syntax for attributes declaration, als orequiring a strict data type before variable name (i.e. string $str).
2019-03-17 19:43:03 +01:00
Rafal Kupiec
128f4bba01
This is already done, even methods do not support strict data type hinting.
2019-03-17 19:41:32 +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
615e75fb8a
Store methods return type.
2019-03-16 14:57:04 +01:00
Rafal Kupiec
7897f28ebb
Fix parameters order.
2019-03-13 20:10:32 +01:00
Rafal Kupiec
e498bc7646
It is enought to declare 'object'.
2019-03-13 19:59:48 +01:00
Rafal Kupiec
a2749000d6
Do not store these information twice; save the memory.
2019-03-13 09:58:00 +01:00
Rafal Kupiec
f71e60f641
Add fields to store information about method's return data type.
2019-03-13 09:43:27 +01:00
Rafal Kupiec
cc4a9aa063
Merge branch 'typehinting' of ssh://git.codingworkshop.eu.org:8822/AerScript/Aer into typehinting
2019-03-13 09:36:26 +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
3e4064f55a
Another feature to not forget about.
2019-03-11 12:02:24 +01:00
Rafal Kupiec
ac16d5ce57
Still many things to do here.
2019-03-11 08:24:13 +01:00
Rafal Kupiec
df3d00d02c
Revert f1d4d80f65
.
2019-03-11 08:16:51 +01:00
Rafal Kupiec
051bca470e
Save the closure return data type for further use.
2019-03-10 21:02:06 +01:00
Rafal Kupiec
f1d4d80f65
Cleanup keywords.
2019-03-09 22:39:26 +01:00
Rafal Kupiec
8aacf7c70e
Do not use PH7_KEYWORD_FUNCTION for closure declaration.
2019-03-09 19:43:56 +01:00
Rafal Kupiec
0524092539
Add missing space in error message
2019-03-09 16:49:46 +01:00
Rafal Kupiec
d6c5f01905
PH7_VmMemoryError() always breaks script execution.
2019-03-09 14:00:11 +01:00
Rafal Kupiec
e86894f724
PH7_VmMemoryError() always breaks script execution.
2019-03-09 13:59:04 +01:00
Rafal Kupiec
bd4151f426
Just fixed.
2019-03-09 13:40:24 +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
4af3220018
Throw a warning when trying to typecast to resource.
2019-02-13 13:22:30 +01:00
Rafal Kupiec
a7b4c6e880
Do not typecast to resource type at all. This might lead to attempt of access to the invalid memory area and segmentation fault.
2019-02-08 14:28:04 +01:00
Rafal Kupiec
fa0b487cc0
Implement typecasting to resource data type.
2019-02-08 14:06:39 +01:00
Rafal Kupiec
efbe191989
Update todo list.
2019-02-08 13:57:15 +01:00
Rafal Kupiec
5d3acf74d0
Another test - tokenizer.
2019-02-07 18:43:58 +01:00
Rafal Kupiec
6927c5c038
Factorial test.
2019-02-07 18:29:53 +01:00
Rafal Kupiec
6a74bf9e8b
Test if method overloading is working properly.
2019-02-07 18:23:37 +01:00
Rafal Kupiec
ed8dab7870
Add more tests.
2019-02-05 19:48:38 +01:00
Rafal Kupiec
ff9e38a480
This is really an array.
2019-02-05 19:26:06 +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
4db8ec02cd
Make tests.
2018-12-20 18:31:59 +01:00
Rafal Kupiec
f97e2a8294
Implement typecasting to callback data type.
2018-12-20 18:30:21 +01:00
Rafal Kupiec
2949c8dcfb
Fix typo.
2018-12-20 18:20:18 +01:00
Rafal Kupiec
784c705af6
Add callback cast operator.
2018-12-13 10:07:44 +01:00
Rafal Kupiec
1c3211e00d
Add missing PH7_OP_CVT_CALL definition.
2018-12-13 09:35:48 +01:00
Rafal Kupiec
0278f0a630
Add callback cast operator.
2018-12-13 09:31:32 +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
2572b9321d
This is already fixed.
2018-11-29 13:10:00 +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
9ab896c2e2
Implement PH7_CheckVarCompat().
2018-11-28 20:37:07 +01:00
Rafal Kupiec
f3f1723104
Return valid function for conversion to char.
2018-11-28 20:11:47 +01:00
Rafal Kupiec
0d3cb90d5f
Always convert integer value to char as it is done in C/C++.
2018-11-28 20:10:14 +01:00
Rafal Kupiec
a5ef118263
More bugs to fix in this branch.
2018-11-28 14:09:21 +01:00
Rafal Kupiec
d3e0ffe4bf
Update TODO list.
2018-11-28 14:01:55 +01:00
Rafal Kupiec
3cc8cfe6a2
Remove duplicated code.
2018-11-28 13:58:33 +01:00
Rafal Kupiec
1cebd3af37
Allow char to be typecasted to value of any other type.
2018-11-26 20:41:15 +01:00
Rafal Kupiec
5dde778382
Release object to free some memory.
2018-11-26 20:39:08 +01:00
Rafal Kupiec
d65a529d21
Initial support for char data type.
2018-11-26 20:37:51 +01:00
Rafal Kupiec
8782b9c25b
Update tests to use more strict data types instead of mixed.
2018-11-26 14:41:41 +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
5878a171e6
Update TODO list
2018-11-13 20:26:22 +01:00
Rafal Kupiec
e727453ccf
Fix var_dump() for mixed arrays.
2018-11-13 20:24:55 +01:00
Rafal Kupiec
7a34716298
Add TODO list.
2018-11-07 19:53:15 +01:00
Rafal Kupiec
8724cebf71
Do not actually support references in the same scope.
2018-10-28 19:45:31 +01:00
Rafal Kupiec
ec47190874
Array dump format.
2018-10-27 19:56:13 +02:00
Rafal Kupiec
e5fb7d625e
Allow only a colon as variable separator.
2018-10-27 19:49:24 +02:00
Rafal Kupiec
6f13c347d8
Set the proper type of array.
2018-10-26 19:45:10 +02:00
Rafal Kupiec
03cf969c31
Check for a type of array.
2018-10-11 15:15:48 +02:00
Rafal Kupiec
b66515516e
First check if array or object.
2018-10-01 22:46:35 +02:00
Rafal Kupiec
6293b8f5bf
Do not try to dump empty array.
2018-10-01 22:43:23 +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
6e7bc74949
Put comment in right place.
2018-09-24 13:39:50 +02:00
Rafal Kupiec
f26095658d
Treat empty object as false.
2018-09-24 13:38:33 +02:00
Rafal Kupiec
2db1954779
Another bunch of fixes for object type.
2018-09-24 13:34:22 +02:00
Rafal Kupiec
550107235c
Do not try to dump a non-instantiated object.
2018-09-24 12:22:58 +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
f72d6c3922
Load data from array/object only if there is anything stored.
2018-09-24 11:47:30 +02:00
Rafal Kupiec
59fda6d797
Unref hashmap and object only if there is any data stored.
2018-09-24 11:29:51 +02:00
Rafal Kupiec
ba0c250911
Fix test.
2018-09-23 19:07:03 +02:00
Rafal Kupiec
08296110fb
Temporarily fix tests.
2018-09-23 17:51:47 +02:00
Rafal Kupiec
dd774be005
Fix for() loop, do not use iP1 for OP_LOAD.
2018-09-23 17:51:09 +02:00
Rafal Kupiec
ae0fde152c
Create a variable only on OP_LOAD.
2018-09-23 17:40:26 +02:00
Rafal Kupiec
28a5fa59ad
Duplicate variable name. Fix variable declaration.
2018-09-22 17:54:59 +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
79e4bac7eb
Remove no longer used PH7_CompileStatic().
2018-09-21 00:22:29 +02:00
Rafal Kupiec
bd4d146d0a
Initial version of variable definition.
2018-09-21 00:21:15 +02:00
Rafal Kupiec
241c7d8168
First step to declare a variable with specified data type.
2018-09-20 17:06:23 +02:00
Rafal Kupiec
e6e59d299e
Fix method parameters.
2018-09-19 19:27:50 +02:00
Rafal Kupiec
9884f8288b
Do not allow typecasting to unset a variable.
2018-09-18 22:11:57 +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
94ae7d187b
No data type for argument specified leads to E_ERROR.
2018-09-14 21:33:31 +02:00
Rafal Kupiec
ca00cadba7
Use strict type hinting in all tests.
2018-09-14 21:32:08 +02:00
Rafal Kupiec
8b48786f29
Add missing data types.
2018-09-14 08:47:16 +02:00
Rafal Kupiec
ecebbb6094
Use type hinting in standard library.
2018-09-14 08:36:00 +02:00
Rafal Kupiec
74b1c196f9
Treat invalid type name as error.
2018-09-13 18:56:01 +02:00