Commit Graph

336 Commits

Author SHA1 Message Date
1f7e14fd7a Finally, do it the proper way. This should fix all problems with accessing class attributes, at least I hope so.
All checks were successful
The build was successful.
2019-05-31 10:09:19 +02:00
519f5050b7 The easiest solutions are the best. Just look for attributes in object.
All checks were successful
The build was successful.
2019-05-31 06:54:01 +02:00
53199cac4e Another fixes to OOP-related error reporting.
All checks were successful
The build was successful.
2019-05-30 20:18:20 +02:00
feba01eb49 More fixes to error messages.
All checks were successful
The build was successful.
2019-05-30 20:00:41 +02:00
b1b78433dd Clean up $base statement.
All checks were successful
The build was successful.
2019-05-30 18:16:29 +02:00
a3a2c8b619 Allow non-static methods inside static (final virtual) classes to be called statically.
All checks were successful
The build was successful.
2019-05-30 12:43:54 +02:00
3530e6ea09 Get rid of useless class_alias() builtin function.
All checks were successful
The build was successful.
2019-05-30 06:46:09 +02:00
1bf5c3a8a2 Consider private attributes to be accessed. Fix access check.
All checks were successful
The build was successful.
2019-05-29 20:16:02 +02:00
8847d645c0 More corrections to error messages.
All checks were successful
The build was successful.
2019-05-29 20:01:32 +02:00
1c0ba22c48 Check access level for static methods call.
All checks were successful
The build was successful.
2019-05-29 19:05:34 +02:00
7732a239ff Correct error messages.
All checks were successful
The build was successful.
2019-05-29 18:56:57 +02:00
a5fb8ff8be VmClassMemberAccess() should only check access right.
All checks were successful
The build was successful.
There is no need for this function to report errors. Function should have responsibility over a single part of the functionality provided. This change also corrects some error messages.
2019-05-29 15:26:31 +02:00
a6f7c6d847 Prevent $base, $parent and $this from being unset.
Some checks reported errors
The build has failed.
2019-05-29 13:45:38 +02:00
28e18bcb4b Attempt to fix attributes lookup and their visibility.
All checks were successful
The build was successful.
2019-05-29 10:45:30 +02:00
2d50a64cac AerScript supports multiple inheritance, thus it needs to iterate through whole list of derived classes.
All checks were successful
The build was successful.
2019-05-29 08:52:43 +02:00
4d1c246a65 Attempt to fix methods visibility mechanism.
All checks were successful
The build was successful.
2019-05-29 08:17:10 +02:00
1f5afc9d51 Reverse the logic. It does not seem to work actually.
All checks were successful
The build was successful.
2019-05-29 08:10:34 +02:00
675f3596a1 Properly look for method in all classes.
All checks were successful
The build was successful.
2019-05-29 06:12:49 +02:00
b319e11c09 Fix build.
All checks were successful
The build was successful.
2019-05-28 11:55:17 +02:00
5c176207e1 Set base class only when $base called.
Some checks reported errors
The build has failed.
2019-05-28 11:51:13 +02:00
5cc4a5e48d Access privileges to methods should be done in OP_MEMBER.
All checks were successful
The build was successful.
2019-05-23 08:27:56 +02:00
5b2f300fe4 Implement '$base' construction.
All checks were successful
The build was successful.
2019-05-21 21:41:16 +02:00
ddd46a4e80 Quick small cleanup.
All checks were successful
The build was successful.
2019-05-21 19:18:52 +02:00
3cca5faa76 Store variable type in dedicated field.
All checks were successful
The build was successful.
2019-05-21 14:49:36 +02:00
f2116a6461 Always use HTTPS when possible.
All checks were successful
The build was successful.
2019-05-15 20:02:39 +02:00
5d9b73ba4e Use method full name.
All checks were successful
The build was successful.
2019-05-15 19:45:39 +02:00
5256dda922 Attempt to fix '$this' and '$parent' constructs.
All checks were successful
The build was successful.
2019-05-10 23:45:32 +02:00
ea5499f8b3 Private methods should not be accessible from child class.
All checks were successful
The build was successful.
2019-05-09 13:53:22 +02:00
5e7d5957e2 Distinguish methods from attributes.
All checks were successful
The build was successful.
2019-05-09 13:43:01 +02:00
d3d3dff673 Do not allow to call statically a non-static method.
All checks were successful
The build was successful.
2019-05-09 06:18:49 +02:00
07bd3ceec3 Reimplement 'parent' construct as variable $parent.
All checks were successful
The build was successful.
This commit also adds new controls to variables, which prevents from re-assigning a value when set. Thanks to that, both $this and $parent cannot be overwritten by using OP_STORE instruction. Other instructions still need some
work.
2019-05-08 08:26:48 +02:00
17e0fb4653 Do not try to resolve constants when OP_MEMBER is next instruction on the stack.
All checks were successful
The build was successful.
2019-05-06 18:42:06 +02:00
7b6245572f Remove constants management builtin functions.
All checks were successful
The build was successful.
2019-05-06 06:54:29 +02:00
c4b63a3018 Rename OP_LOAD instruction to OP_LOADV.
All checks were successful
The build was successful.
2019-05-05 09:33:06 +02:00
ab8bf48485 Make constant declarations local.
All checks were successful
The build was successful.
There are several changes in this commit:
 * first of all constants declared by 'const' statement should be local (declared in current scope / frame),
 * constants are declared by using OP_DECLARE instruction,
 * OP_LOADC browses both global and local constants container,
 * PH7_VmRegisterConstant() allows both global and local declarations.
Since this commit, there are 3 kinds of constants:
 1) global
 2) local (in loop, closure, method)
 3) class members.
Actually there is no way to declare a global constant except the built-in constants.
2019-05-04 13:45:32 +02:00
8f681d1605 Correct PH7_OP_JMPLFE debug name.
All checks were successful
The build was successful.
2019-05-01 20:24:37 +02:00
508e8965a9 VmExtractMemObj() should not be able to create a variable.
All checks were successful
The build was successful.
2019-05-01 18:29:57 +02:00
7d606cbf1d Do not create variables automatically on each OP_CALL using VmExtractMemObj().
All checks were successful
The build was successful.
2019-05-01 18:19:04 +02:00
3dfa4232ba Use VmCreateMemObj() to create $this.
All checks were successful
The build was successful.
2019-05-01 14:00:35 +02:00
798fd7d3b2 Remove unused and useless VM instruction.
All checks were successful
The build was successful.
2019-05-01 12:33:51 +02:00
d76441ad4c Safely store only compatible values.
All checks were successful
The build was successful.
2019-05-01 12:24:20 +02:00
a726ab795a Throw an error if $key or $value does not exist.
All checks were successful
The build was successful.
2019-05-01 09:51:33 +02:00
5c1e0f0cce Simplify the foreach() loop implementation.
All checks were successful
The build was successful.
2019-04-30 23:59:02 +02:00
4d8d92092e Refactor foreach() loop.
All checks were successful
The build was successful.
In AerScript, the foreach() loop is syntatically more similiar to C#, than PHP. However the optional '$key => $value' construct is still available, because arrays in AerScript are still a hashmaps.
2019-04-30 23:38:59 +02:00
1156519af6 This is a compiler task to fill key and value variables names.
All checks were successful
The build was successful.
2019-04-29 11:44:17 +02:00
62c315da9e Call to undefined constant should lead to an error.
All checks were successful
The build was successful.
2019-04-28 21:44:48 +02:00
f09d4def2d It's AerScript.
All checks were successful
The build was successful.
2019-04-28 19:47:09 +02:00
d6fca929ea Callbacks can be just called.
All checks were successful
The build was successful.
2019-04-28 19:36:27 +02:00
6593252bce Remove get_defined_functions() built-in function.
All checks were successful
The build was successful.
This function is useless in Aer, as it is fully OOP language and thus disallows functions declaration.
2019-04-28 19:31:58 +02:00
d26bc99b68 There is no reason to trigger a low-level error in AerScript.
All checks were successful
The build was successful.
AerScript is fully OOP language and supports exceptions that can be thrown at any time.
2019-04-28 19:27:24 +02:00