@@ -76,8 +76,8 @@ class Car {
76
76
def test_get_function_metadata (self ):
77
77
root = self .root_node
78
78
79
- function = JavascriptParser .get_function_list (root )[1 ]
80
- metadata = JavascriptParser .get_function_metadata (function )
79
+ _function = JavascriptParser .get_function_list (root )[1 ]
80
+ metadata = JavascriptParser .get_function_metadata (_function )
81
81
82
82
for key in ['identifier' , 'parameters' , 'return_type' ]:
83
83
self .assertTrue (key in metadata .keys ())
@@ -109,6 +109,57 @@ def test_get_class_metadata(self):
109
109
def test_extract_docstring (self ):
110
110
pass
111
111
112
+
113
+ def test_metadata_with_arrow_function (self ):
114
+ code_sample = '''
115
+ export const parseModel = async (mesh) =>
116
+ new Promise((resolve) => {
117
+ exporter.parse(
118
+ mesh,
119
+ (gltf) => {
120
+ const blob = new Blob([gltf], { type: "application/octet-stream" });
121
+ resolve(blob);
122
+ return blob;
123
+ },
124
+ (error) => {
125
+ console.log(error);
126
+ return error;
127
+
128
+ }
129
+ );
130
+ });
131
+ '''
132
+ root = parse_code (code_sample , 'javascript' ).root_node
133
+ fn = JavascriptParser .get_function_list (root )[0 ]
134
+ metadata = JavascriptParser .get_function_metadata (fn )
135
+
136
+ identifier = metadata ['identifier' ]
137
+ self .assertEqual (identifier , 'parseModel' )
138
+
139
+ def test_metadata_with_undecleared_functions (self ):
140
+ code_sample = """
141
+ const asyncFunctionExpression = async function() {
142
+ // async function expression definition
143
+ return a
144
+ };
145
+
146
+ const generatorFunctionExpression = function*() {
147
+ // generator function expression definition
148
+ return b
149
+ };
150
+ """
151
+ root = parse_code (code_sample , 'javascript' ).root_node
152
+ fn1 , fn2 = JavascriptParser .get_function_list (root )
153
+
154
+ self .assertEqual (fn1 .type , 'function' )
155
+ self .assertEqual (fn2 .type , 'generator_function' )
156
+
157
+ metadata1 = JavascriptParser .get_function_metadata (fn1 )
158
+ metadata2 = JavascriptParser .get_function_metadata (fn2 )
159
+
160
+ self .assertEqual (metadata1 ['identifier' ], 'asyncFunctionExpression' )
161
+ self .assertEqual (metadata2 ['identifier' ], 'generatorFunctionExpression' )
162
+
112
163
113
164
if __name__ == '__main__' :
114
165
unittest .main ()
0 commit comments