diff --git a/javascript/extractor/src/com/semmle/js/extractor/ASTExtractor.java b/javascript/extractor/src/com/semmle/js/extractor/ASTExtractor.java index 719d4881dca..ba6ef39efd2 100644 --- a/javascript/extractor/src/com/semmle/js/extractor/ASTExtractor.java +++ b/javascript/extractor/src/com/semmle/js/extractor/ASTExtractor.java @@ -891,7 +891,7 @@ public class ASTExtractor { private void extractFunctionAttributes(IFunction nd, Label key) { if (nd.isGenerator()) trapwriter.addTuple("is_generator", key); if (nd.hasRest()) trapwriter.addTuple("has_rest_parameter", key); - if (nd.isAsync()) trapwriter.addTuple("isAsync", key); + if (nd.isAsync()) trapwriter.addTuple("is_async", key); } @Override diff --git a/javascript/extractor/tests/es2017/output/trap/async-await.js.trap b/javascript/extractor/tests/es2017/output/trap/async-await.js.trap index bc3f77e86cd..cd79c3985ef 100644 --- a/javascript/extractor/tests/es2017/output/trap/async-await.js.trap +++ b/javascript/extractor/tests/es2017/output/trap/async-await.js.trap @@ -232,7 +232,7 @@ decl(#20078,#20077) #20079=@"var;{arguments};{#20076}" variables(#20079,"arguments",#20076) is_arguments_object(#20079) -isAsync(#20073) +is_async(#20073) #20080=* stmts(#20080,1,#20073,-2,"{\n try ... ;\n }\n}") #20081=@"loc,{#10000},1,30,7,1" diff --git a/javascript/extractor/tests/es2017/output/trap/export-async-1.js.trap b/javascript/extractor/tests/es2017/output/trap/export-async-1.js.trap index f9739c67bb4..86da62095d0 100644 --- a/javascript/extractor/tests/es2017/output/trap/export-async-1.js.trap +++ b/javascript/extractor/tests/es2017/output/trap/export-async-1.js.trap @@ -108,7 +108,7 @@ scopenesting(#20034,#20027) #20035=@"var;{arguments};{#20034}" variables(#20035,"arguments",#20034) is_arguments_object(#20035) -isAsync(#20031) +is_async(#20031) #20036=* stmts(#20036,1,#20031,-2,"{}") #20037=@"loc,{#10000},1,35,1,36" diff --git a/javascript/extractor/tests/es2017/output/trap/export-async-2.js.trap b/javascript/extractor/tests/es2017/output/trap/export-async-2.js.trap index 004c49b7c2e..d13cc444d29 100644 --- a/javascript/extractor/tests/es2017/output/trap/export-async-2.js.trap +++ b/javascript/extractor/tests/es2017/output/trap/export-async-2.js.trap @@ -96,7 +96,7 @@ scopenesting(#20030,#20025) #20031=@"var;{arguments};{#20030}" variables(#20031,"arguments",#20030) is_arguments_object(#20031) -isAsync(#20028) +is_async(#20028) #20032=* stmts(#20032,1,#20028,-2,"{}") #20033=@"loc,{#10000},1,34,1,35" diff --git a/javascript/extractor/tests/es2017/output/trap/invalid-async-fn.js.trap b/javascript/extractor/tests/es2017/output/trap/invalid-async-fn.js.trap index 8215bd97037..03b1c5fb16c 100644 --- a/javascript/extractor/tests/es2017/output/trap/invalid-async-fn.js.trap +++ b/javascript/extractor/tests/es2017/output/trap/invalid-async-fn.js.trap @@ -109,7 +109,7 @@ hasLocation(#20034,#20015) expr_containers(#20034,#20030) literals("x","x",#20034) decl(#20034,#20033) -isAsync(#20030) +is_async(#20030) #20035=* exprs(#20035,79,#20030,-2,"x") hasLocation(#20035,#20023) diff --git a/javascript/extractor/tests/es2018/output/trap/asyncIter.js.trap b/javascript/extractor/tests/es2018/output/trap/asyncIter.js.trap index 66d4f544f7a..cd9b4fbd27e 100644 --- a/javascript/extractor/tests/es2018/output/trap/asyncIter.js.trap +++ b/javascript/extractor/tests/es2018/output/trap/asyncIter.js.trap @@ -381,7 +381,7 @@ scopenesting(#20139,#20000) variables(#20140,"arguments",#20139) is_arguments_object(#20140) is_generator(#20137) -isAsync(#20137) +is_async(#20137) #20141=* stmts(#20141,1,#20137,-2,"{}") #20142=@"loc,{#10000},1,27,1,28" @@ -432,7 +432,7 @@ scopenesting(#20152,#20146) variables(#20153,"arguments",#20152) is_arguments_object(#20153) is_generator(#20150) -isAsync(#20150) +is_async(#20150) #20154=* stmts(#20154,1,#20150,-2,"{}") #20155=@"loc,{#10000},4,22,4,23" @@ -482,7 +482,7 @@ scopenesting(#20165,#20146) variables(#20166,"arguments",#20165) is_arguments_object(#20166) is_generator(#20163) -isAsync(#20163) +is_async(#20163) #20167=* stmts(#20167,1,#20163,-2,"{}") #20168=@"loc,{#10000},5,35,5,36" @@ -572,7 +572,7 @@ scopenesting(#20188,#20000) variables(#20189,"arguments",#20188) is_arguments_object(#20189) is_generator(#20186) -isAsync(#20186) +is_async(#20186) #20190=* stmts(#20190,1,#20186,-2,"{}") #20191=@"loc,{#10000},9,22,9,23" @@ -620,7 +620,7 @@ scopenesting(#20200,#20000) variables(#20201,"arguments",#20200) is_arguments_object(#20201) is_generator(#20198) -isAsync(#20198) +is_async(#20198) #20202=* stmts(#20202,1,#20198,-2,"{}") #20203=@"loc,{#10000},10,35,10,36" diff --git a/javascript/extractor/tests/esnext/output/trap/async-generators.js.trap b/javascript/extractor/tests/esnext/output/trap/async-generators.js.trap index 0fc53eab7c8..67f29efe9f8 100644 --- a/javascript/extractor/tests/esnext/output/trap/async-generators.js.trap +++ b/javascript/extractor/tests/esnext/output/trap/async-generators.js.trap @@ -206,7 +206,7 @@ scopenesting(#20072,#20000) variables(#20073,"arguments",#20072) is_arguments_object(#20073) is_generator(#20069) -isAsync(#20069) +is_async(#20069) #20074=* stmts(#20074,1,#20069,-2,"{\n}") #20075=@"loc,{#10000},1,23,2,1" @@ -234,7 +234,7 @@ variables(#20080,"x",#20079) #20081=@"var;{arguments};{#20079}" variables(#20081,"arguments",#20079) is_arguments_object(#20081) -isAsync(#20076) +is_async(#20076) #20082=* stmts(#20082,1,#20076,-2,"{\n for ... o());\n}") #20083=@"loc,{#10000},4,22,6,1" diff --git a/javascript/extractor/tests/flow/output/trap/async.js.trap b/javascript/extractor/tests/flow/output/trap/async.js.trap index bdee37ef303..b53ba8247ff 100644 --- a/javascript/extractor/tests/flow/output/trap/async.js.trap +++ b/javascript/extractor/tests/flow/output/trap/async.js.trap @@ -141,7 +141,7 @@ expr_containers(#20046,#20001) scopes(#20048,1) scopenodes(#20046,#20048) scopenesting(#20048,#20000) -isAsync(#20046) +is_async(#20046) #20049=* exprs(#20049,92,#20046,-2,"await foo()") #20050=@"loc,{#10000},1,38,1,48" diff --git a/javascript/ql/src/semmle/javascript/Aliases.qll b/javascript/ql/src/semmle/javascript/Aliases.qll index d9ec2b0077d..b97e5911e45 100644 --- a/javascript/ql/src/semmle/javascript/Aliases.qll +++ b/javascript/ql/src/semmle/javascript/Aliases.qll @@ -290,3 +290,8 @@ deprecated predicate isGenerator(Function fun) { is_generator(fun) } * Use `Function#hasRestParameter()` instead. */ deprecated predicate hasRestParameter(Function fun) { has_rest_parameter(fun) } +/** + * Alias for the predicate `is_async` defined in the .dbscheme. + * Use `Function#isAsync()` instead. + */ +deprecated predicate isAsync(Function fun) { is_async(fun) } diff --git a/javascript/ql/src/semmle/javascript/Functions.qll b/javascript/ql/src/semmle/javascript/Functions.qll index 68f336074bc..43c293417c2 100644 --- a/javascript/ql/src/semmle/javascript/Functions.qll +++ b/javascript/ql/src/semmle/javascript/Functions.qll @@ -202,7 +202,7 @@ class Function extends @function, Parameterized, TypeParameterized, StmtContaine predicate hasTrailingComma() { lastTokenOfParameterList().getNextToken().getValue() = "," } /** Holds if this function is an asynchronous function. */ - predicate isAsync() { isAsync(this) } + predicate isAsync() { is_async(this) } /** Holds if this function is asynchronous or a generator. */ predicate isAsyncOrGenerator() { isAsync() or isGenerator() } diff --git a/javascript/ql/src/semmlecode.javascript.dbscheme b/javascript/ql/src/semmlecode.javascript.dbscheme index 76c1efe798f..89a04b25086 100644 --- a/javascript/ql/src/semmlecode.javascript.dbscheme +++ b/javascript/ql/src/semmlecode.javascript.dbscheme @@ -441,7 +441,7 @@ scopenesting (unique int inner: @scope ref, is_generator (int fun: @function ref); has_rest_parameter (int fun: @function ref); -isAsync (int fun: @function ref); +is_async (int fun: @function ref); // variables and lexically scoped type names #keyset[scope, name] diff --git a/javascript/ql/src/semmlecode.javascript.dbscheme.stats b/javascript/ql/src/semmlecode.javascript.dbscheme.stats index b231d1c1e74..7b0782d0265 100644 --- a/javascript/ql/src/semmlecode.javascript.dbscheme.stats +++ b/javascript/ql/src/semmlecode.javascript.dbscheme.stats @@ -11709,7 +11709,7 @@ -isAsync +is_async 50 diff --git a/javascript/upgrades/c73fbfca57f3d593b9ff50c6aa3a886d6888efec/upgrade.properties b/javascript/upgrades/c73fbfca57f3d593b9ff50c6aa3a886d6888efec/upgrade.properties index b3ead7f8d42..3b782318fcb 100644 --- a/javascript/upgrades/c73fbfca57f3d593b9ff50c6aa3a886d6888efec/upgrade.properties +++ b/javascript/upgrades/c73fbfca57f3d593b9ff50c6aa3a886d6888efec/upgrade.properties @@ -90,3 +90,5 @@ is_generator.rel: reorder isGenerator.rel(int fun) fun isGenerator.rel: delete has_rest_parameter.rel: reorder hasRestParameter.rel(int fun) fun hasRestParameter.rel: delete +is_async.rel: reorder isAsync.rel(int fun) fun +isAsync.rel: delete