Skip to content

Commit 3ee7716

Browse files
Daniel Ballazherczeg
authored andcommitted
Fix JerryScript build with clang-6.0 (#2610)
This patch fixes the following error with Clang-6.0 ``` jerryscript/jerry-core/api/jerry.c:1527:71: error: implicit conversion loses integer precision: 'jerry_regexp_flags_t' to 'uint16_t' (aka 'unsigned short') [-Werror,-Wconversion] jerry_value_t ret_val = ecma_op_create_regexp_object (ecma_pattern, flags); ``` Also change the `jerry_create_regexp` and `jerry_create_regexp_sz` functions' `flags` parameter to `uint16_t` since the values created with `bitwise inclusive OR` are not part of the enum. JerryScript-DCO-1.0-Signed-off-by: Daniel Balla [email protected]
1 parent 99b968d commit 3ee7716

File tree

4 files changed

+15
-14
lines changed

4 files changed

+15
-14
lines changed

docs/02.API-REFERENCE.md

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3421,24 +3421,25 @@ jerry_create_string_sz (const jerry_char_t *str_p,
34213421
**Summary**
34223422

34233423
Returns a jerry_value_t RegExp object or an error, if the construction of the object fails.
3424-
Optional flags can be set using [jerry_regexp_flags_t](#jerry_regexp_flags_t);
3424+
Optional flags can be set using [jerry_regexp_flags_t](#jerry_regexp_flags_t).
3425+
These flags can be combined together with the binary OR operator or used on their own as enum values.
34253426

34263427
**Prototype**
34273428
```c
34283429
jerry_value_t
3429-
jerry_create_regexp (const jerry_char_t *pattern_p, jerry_regexp_flags_t flags);
3430+
jerry_create_regexp (const jerry_char_t *pattern_p, uint16_t flags);
34303431
```
34313432

34323433
- `pattern_p` - the RegExp pattern as a zero-terminated UTF-8 string
3433-
- `flags` - optional flags for the RegExp object
3434+
- `flags` - optional flags for the RegExp object, see [jerry_regexp_flags_t](#jerry_regexp_flags_t)
34343435
- return value - the RegExp object as a `jerry_value_t`
34353436

34363437
**Example**
34373438

34383439
```c
34393440
{
34403441
jerry_char_t pattern_p = "[cgt]gggtaaa|tttaccc[acg]";
3441-
jerry_regexp_flags_t pattern_flags = JERRY_REGEXP_FLAG_IGNORE_CASE;
3442+
uint16_t pattern_flags = JERRY_REGEXP_FLAG_IGNORE_CASE;
34423443

34433444
jerry_value_t regexp = jerry_create_regexp (pattern_p, pattern_flags);
34443445

@@ -3454,17 +3455,18 @@ jerry_create_regexp (const jerry_char_t *pattern_p, jerry_regexp_flags_t flags);
34543455
**Summary**
34553456

34563457
Returns a jerry_value_t RegExp object or an error, if the construction of the object fails.
3457-
Optional flags can be set using [jerry_regexp_flags_t](#jerry_regexp_flags_t);
3458+
Optional flags can be set using [jerry_regexp_flags_t](#jerry_regexp_flags_t).
3459+
These flags can be combined together with the binary OR operator or used on their own as enum values.
34583460

34593461
**Prototype**
34603462
```c
34613463
jerry_value_t
3462-
jerry_create_regexp_sz (const jerry_char_t *pattern_p, jerry_size_t pattern_size, jerry_regexp_flags_t flags);
3464+
jerry_create_regexp_sz (const jerry_char_t *pattern_p, jerry_size_t pattern_size, uint16_t flags);
34633465
```
34643466

34653467
- `pattern_p` - the RegExp pattern as a zero-terminated UTF-8 string
34663468
- `pattern_size` - size of the `pattern`
3467-
- `flags` - optional flags for the RegExp object
3469+
- `flags` - optional flags for the RegExp object, see [jerry_regexp_flags_t](#jerry_regexp_flags_t)
34683470
- return value - the RegExp object as a `jerry_value_t`
34693471

34703472
**Example**
@@ -3473,7 +3475,7 @@ jerry_create_regexp_sz (const jerry_char_t *pattern_p, jerry_size_t pattern_size
34733475
{
34743476
jerry_char_t pattern_p = "[cgt]gggtaaa|tttaccc[acg]";
34753477
jerry_size_t pattern_size = sizeof (pattern_p) - 1;
3476-
jerry_regexp_flags_t pattern_flags = JERRY_REGEXP_FLAG_IGNORE_CASE;
3478+
uint16_t pattern_flags = JERRY_REGEXP_FLAG_IGNORE_CASE;
34773479

34783480
jerry_value_t regexp = jerry_create_regexp_sz (pattern_p, pattern_size, pattern_flags);
34793481

jerry-core/api/jerry.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1500,7 +1500,7 @@ jerry_create_string_sz (const jerry_char_t *str_p, /**< pointer to string */
15001500
*/
15011501
jerry_value_t
15021502
jerry_create_regexp (const jerry_char_t *pattern_p, /**< zero-terminated UTF-8 string as RegExp pattern */
1503-
jerry_regexp_flags_t flags) /**< optional RegExp flags */
1503+
uint16_t flags) /**< optional RegExp flags */
15041504
{
15051505
return jerry_create_regexp_sz (pattern_p, lit_zt_utf8_string_size (pattern_p), flags);
15061506
} /* jerry_create_regexp */
@@ -1513,7 +1513,7 @@ jerry_create_regexp (const jerry_char_t *pattern_p, /**< zero-terminated UTF-8 s
15131513
jerry_value_t
15141514
jerry_create_regexp_sz (const jerry_char_t *pattern_p, /**< zero-terminated UTF-8 string as RegExp pattern */
15151515
jerry_size_t pattern_size, /**< length of the pattern */
1516-
jerry_regexp_flags_t flags) /**< optional RegExp flags */
1516+
uint16_t flags) /**< optional RegExp flags */
15171517
{
15181518
jerry_assert_api_available ();
15191519

jerry-core/include/jerryscript-core.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -458,9 +458,8 @@ jerry_value_t jerry_create_number_nan (void);
458458
jerry_value_t jerry_create_null (void);
459459
jerry_value_t jerry_create_object (void);
460460
jerry_value_t jerry_create_promise (void);
461-
jerry_value_t jerry_create_regexp (const jerry_char_t *pattern, jerry_regexp_flags_t flags);
462-
jerry_value_t jerry_create_regexp_sz (const jerry_char_t *pattern, jerry_size_t pattern_size,
463-
jerry_regexp_flags_t flags);
461+
jerry_value_t jerry_create_regexp (const jerry_char_t *pattern, uint16_t flags);
462+
jerry_value_t jerry_create_regexp_sz (const jerry_char_t *pattern, jerry_size_t pattern_size, uint16_t flags);
464463
jerry_value_t jerry_create_string_from_utf8 (const jerry_char_t *str_p);
465464
jerry_value_t jerry_create_string_sz_from_utf8 (const jerry_char_t *str_p, jerry_size_t str_size);
466465
jerry_value_t jerry_create_string (const jerry_char_t *str_p);

tests/unit-core/test-regexp.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ main (void)
2626
jerry_value_t global_obj_val = jerry_get_global_object ();
2727

2828
jerry_char_t pattern[] = "[^.]+";
29-
jerry_regexp_flags_t flags = JERRY_REGEXP_FLAG_GLOBAL | JERRY_REGEXP_FLAG_MULTILINE;
29+
uint16_t flags = JERRY_REGEXP_FLAG_GLOBAL | JERRY_REGEXP_FLAG_MULTILINE;
3030
jerry_value_t regex_obj = jerry_create_regexp (pattern, flags);
3131
TEST_ASSERT (jerry_value_is_object (regex_obj));
3232

0 commit comments

Comments
 (0)