Implement eval check for ECMAScript code (#4788)

JerryScript-DCO-1.0-Signed-off-by: Zoltan Herczeg zherczeg.u-szeged@partner.samsung.com
This commit is contained in:
Zoltan Herczeg
2021-10-15 22:25:20 +02:00
committed by GitHub
parent fe3a5c08b2
commit b52c114423
7 changed files with 196 additions and 2 deletions
+55 -1
View File
@@ -12035,7 +12035,7 @@ is no longer needed.
jerry_value_t
jerry_get_user_value (const jerry_value_t value);
```
- `value` - script / module / function value which executes JavaScript
- `value` - script / module / function value which executes ECMAScript
code (native modules / functions do not have user value).
- return
- user value - if available,
@@ -12084,6 +12084,60 @@ main (void)
- [jerry_generate_snapshot](#jerry_generate_snapshot)
- [jerry_exec_snapshot](#jerry_exec_snapshot)
## jerry_is_eval_code
**Summary**
Checks whether an ECMAScript code is compiled by eval like (eval, new Function,
[jerry_eval](#jerry_eval), etc.) command.
**Prototype**
```c
bool jerry_is_eval_code (const jerry_value_t value);
```
- `value` - script / module / function value which executes ECMAScript code
- return
- true - if code is compiled by eval like command
- false - otherwise
*New in version [[NEXT_RELEASE]]*.
**Example**
[doctest]: # ()
```c
#include "jerryscript.h"
int
main (void)
{
jerry_init (JERRY_INIT_EMPTY);
const jerry_char_t script[] = "eval('(function (a) { return a; })')";
jerry_value_t script_value = jerry_parse (script, sizeof (script) - 1, NULL);
jerry_value_t function_value = jerry_run (script_value);
jerry_release_value (script_value);
if (jerry_is_eval_code (function_value))
{
/* Code enters here. */
}
jerry_release_value (function_value);
jerry_cleanup ();
return 0;
}
```
**See also**
- [jerry_parse](#jerry_parse)
- [jerry_generate_snapshot](#jerry_generate_snapshot)
- [jerry_exec_snapshot](#jerry_exec_snapshot)
## jerry_get_source_info
**Summary**