Add a userdiff pattern for javascript, and 13 test cases for instances of function declarations in javascript. Signed-off-by: Derick W. de M. Frias <derick.william.moraes@xxxxxxxxx> --- .../javascript-anonymous-function-assigned | 4 +++ t/t4018/javascript-arrow-function-assigned | 4 +++ t/t4018/javascript-arrow-function-assigned-2 | 1 + t/t4018/javascript-async-function | 4 +++ t/t4018/javascript-async-function-assigned | 4 +++ t/t4018/javascript-class-function | 6 ++++ t/t4018/javascript-function | 4 +++ t/t4018/javascript-function-assigned | 4 +++ t/t4018/javascript-generator-function | 5 ++++ t/t4018/javascript-generator-function-2 | 5 ++++ .../javascript-generator-function-assigned | 5 ++++ .../javascript-generator-function-assigned-2 | 5 ++++ t/t4018/javascript-method-function | 6 ++++ userdiff.c | 28 +++++++++++++++++++ 14 files changed, 85 insertions(+) create mode 100644 t/t4018/javascript-anonymous-function-assigned create mode 100644 t/t4018/javascript-arrow-function-assigned create mode 100644 t/t4018/javascript-arrow-function-assigned-2 create mode 100644 t/t4018/javascript-async-function create mode 100644 t/t4018/javascript-async-function-assigned create mode 100644 t/t4018/javascript-class-function create mode 100644 t/t4018/javascript-function create mode 100644 t/t4018/javascript-function-assigned create mode 100644 t/t4018/javascript-generator-function create mode 100644 t/t4018/javascript-generator-function-2 create mode 100644 t/t4018/javascript-generator-function-assigned create mode 100644 t/t4018/javascript-generator-function-assigned-2 create mode 100644 t/t4018/javascript-method-function diff --git a/t/t4018/javascript-anonymous-function-assigned b/t/t4018/javascript-anonymous-function-assigned new file mode 100644 index 0000000000..d3c1728dd8 --- /dev/null +++ b/t/t4018/javascript-anonymous-function-assigned @@ -0,0 +1,4 @@ +const RIGHT = function (a, b) { + + return a + b; +}; \ No newline at end of file diff --git a/t/t4018/javascript-arrow-function-assigned b/t/t4018/javascript-arrow-function-assigned new file mode 100644 index 0000000000..5f0b056f61 --- /dev/null +++ b/t/t4018/javascript-arrow-function-assigned @@ -0,0 +1,4 @@ +const RIGHT = (a, b) => { + + return a + b; +}; \ No newline at end of file diff --git a/t/t4018/javascript-arrow-function-assigned-2 b/t/t4018/javascript-arrow-function-assigned-2 new file mode 100644 index 0000000000..9e923f4261 --- /dev/null +++ b/t/t4018/javascript-arrow-function-assigned-2 @@ -0,0 +1 @@ +const RIGHT = a => a+1; \ No newline at end of file diff --git a/t/t4018/javascript-async-function b/t/t4018/javascript-async-function new file mode 100644 index 0000000000..7f99b8c89a --- /dev/null +++ b/t/t4018/javascript-async-function @@ -0,0 +1,4 @@ +async function RIGHT (a, b) { + + return a + b; +}; \ No newline at end of file diff --git a/t/t4018/javascript-async-function-assigned b/t/t4018/javascript-async-function-assigned new file mode 100644 index 0000000000..9a01d9701f --- /dev/null +++ b/t/t4018/javascript-async-function-assigned @@ -0,0 +1,4 @@ +const RIGHT = async function (a, b) { + + return a + b; +}; \ No newline at end of file diff --git a/t/t4018/javascript-class-function b/t/t4018/javascript-class-function new file mode 100644 index 0000000000..9f216d7174 --- /dev/null +++ b/t/t4018/javascript-class-function @@ -0,0 +1,6 @@ +class Test { + RIGHT() { + let a = 1; + let b = Value; + } +} \ No newline at end of file diff --git a/t/t4018/javascript-function b/t/t4018/javascript-function new file mode 100644 index 0000000000..d11ad34aff --- /dev/null +++ b/t/t4018/javascript-function @@ -0,0 +1,4 @@ +function RIGHT (a, b) { + + return a + b; +}; \ No newline at end of file diff --git a/t/t4018/javascript-function-assigned b/t/t4018/javascript-function-assigned new file mode 100644 index 0000000000..38eaecafc6 --- /dev/null +++ b/t/t4018/javascript-function-assigned @@ -0,0 +1,4 @@ +const RIGHT = function test (a, b) { + + return a + b; +}; \ No newline at end of file diff --git a/t/t4018/javascript-generator-function b/t/t4018/javascript-generator-function new file mode 100644 index 0000000000..af7cbb50a3 --- /dev/null +++ b/t/t4018/javascript-generator-function @@ -0,0 +1,5 @@ +function* RIGHT() { + + yield 1; + yield 2; +} \ No newline at end of file diff --git a/t/t4018/javascript-generator-function-2 b/t/t4018/javascript-generator-function-2 new file mode 100644 index 0000000000..d40b395f5c --- /dev/null +++ b/t/t4018/javascript-generator-function-2 @@ -0,0 +1,5 @@ +function *RIGHT() { + + yield 1; + yield 2; +} \ No newline at end of file diff --git a/t/t4018/javascript-generator-function-assigned b/t/t4018/javascript-generator-function-assigned new file mode 100644 index 0000000000..b45d069949 --- /dev/null +++ b/t/t4018/javascript-generator-function-assigned @@ -0,0 +1,5 @@ +const RIGHT = function* (){ + + yield 1; + yield 2; +} \ No newline at end of file diff --git a/t/t4018/javascript-generator-function-assigned-2 b/t/t4018/javascript-generator-function-assigned-2 new file mode 100644 index 0000000000..2c4bc271ab --- /dev/null +++ b/t/t4018/javascript-generator-function-assigned-2 @@ -0,0 +1,5 @@ +const RIGHT = function *(){ + + yield 1; + yield 2; +} \ No newline at end of file diff --git a/t/t4018/javascript-method-function b/t/t4018/javascript-method-function new file mode 100644 index 0000000000..37e380cc6f --- /dev/null +++ b/t/t4018/javascript-method-function @@ -0,0 +1,6 @@ +const Test = { + RIGHT() { + let a = 1; + let b = Value; + } +} \ No newline at end of file diff --git a/userdiff.c b/userdiff.c index 05776ccd10..94134e5b09 100644 --- a/userdiff.c +++ b/userdiff.c @@ -237,6 +237,34 @@ PATTERNS("java", "|[-+0-9.e]+[fFlL]?|0[xXbB]?[0-9a-fA-F]+[lL]?" "|[-+*/<>%&^|=!]=" "|--|\\+\\+|<<=?|>>>?=?|&&|\\|\\|"), +PATTERNS("javascript", + /* conventional named functions */ + "^[ \t]*(async[ \t]+)?function[ \t]*\\*?[ \t]*([$_a-zA-Z][$_a-zA-Z0-9]*)[ \t]*\\(.*$|" + /* assigned functions */ + "^[ \t]*(const|let|var)[ \t]+([$_a-zA-Z][$_a-zA-Z0-9]*)[ \t]*=" + "[ \t]*(async[ \t]+)?function[ \t]*\\*?[ \t]*([$_a-zA-Z][$_a-zA-Z0-9]*)?[ \t]*\\(.*$|" + /* arrow functions */ + "^[ \t]*(const|let|var)[ \t]+([$_a-zA-Z][$_a-zA-Z0-9]*)[ \t]*=" + "[ \t]*(\\([^\\)]*\\)|[$_a-zA-Z][$_a-zA-Z0-9]*)[ \t]*=>[ \t]*\\{?.*$|" + /* functions declared inside classes and objects */ + "^[ \t]*(static[ \t]+)?(async[ \t]+)?(get[ \t]+|set[ \t]+)?\\*?[ \t]*" + "([$_a-zA-Z][$_a-zA-Z0-9]*)[ \t]*\\([^)]*\\)[ \t]*\\{.*$", + /* identifiers */ + "[$_A-Za-z][$_A-Za-z0-9]*|" + /* hexadecimal and big hexadecimal */ + "0[xX](?:[0-9a-fA-F](?:_?[0-9a-fA-F])*)n?|" + /* octa and big octa */ + "0[oO](?:[0-7](?:_?[0-7])*)n?|" + /* binary and big binary */ + "0[bB](?:[01](?:_?[01])*)n?|" + /* decimal, floting point and exponent notation (eE) */ + "(?:0|[1-9](?:_?[0-9])*)(?:\\.(?:[0-9](?:_?[0-9])*))?(?:[eE][+-]?(?:[0-9](?:_?[0-9])*))?|" + /* big decimal */ + "(?:0|[1-9](?:_?[0-9])*)n|" + /* punctuation */ + "\\{|\\}|\\(|\\)|\\.|\\.{3}|;|,|<|>|<=|>=|==|!=|={3}|!==|\\+|-|\\*|/|%|\\*{2}|" + "\\+{2}|--|<<|>>|>>>|&|\\||\\^|!|~|&&|\\|{2}|\\?{1,2}|:|=|\\+=|-=|\\*=|%=|\\*{2}=|" + "<<=|>>=|>>>=|&=|\\|=|\\^=|&&=|\\|{2}=|\\?{2}=|=>"), PATTERNS("kotlin", "^[ \t]*(([a-z]+[ \t]+)*(fun|class|interface)[ \t]+.*)$", /* -- */ -- 2.50.0.rc0.62.g658f0ae201.dirty