diff --git a/javascript/extractor/src/com/semmle/js/ast/DeclarationFlags.java b/javascript/extractor/src/com/semmle/js/ast/DeclarationFlags.java index e180c1fa135..42d97281d13 100644 --- a/javascript/extractor/src/com/semmle/js/ast/DeclarationFlags.java +++ b/javascript/extractor/src/com/semmle/js/ast/DeclarationFlags.java @@ -38,7 +38,7 @@ public class DeclarationFlags { public static final List relationNames = Arrays.asList( "is_computed", - "isAbstractMember", + "is_abstract_member", "is_static", "hasReadonlyKeyword", "hasPublicKeyword", diff --git a/javascript/extractor/tests/shebang/output/trap/typescript-with-shebang.ts.trap b/javascript/extractor/tests/shebang/output/trap/typescript-with-shebang.ts.trap index 0e650cd885e..20220279fe5 100644 --- a/javascript/extractor/tests/shebang/output/trap/typescript-with-shebang.ts.trap +++ b/javascript/extractor/tests/shebang/output/trap/typescript-with-shebang.ts.trap @@ -108,7 +108,7 @@ hasLocation(#20034,#20017) enclosing_stmt(#20034,#20029) expr_containers(#20034,#20001) literals("x","x",#20034) -isAbstractMember(#20032) +is_abstract_member(#20032) #20035=* typeexprs(#20035,2,#20032,2,"number") hasLocation(#20035,#20021) diff --git a/javascript/extractor/tests/shebang/output/trap/typescript.ts.trap b/javascript/extractor/tests/shebang/output/trap/typescript.ts.trap index d4e40629c21..b987065937e 100644 --- a/javascript/extractor/tests/shebang/output/trap/typescript.ts.trap +++ b/javascript/extractor/tests/shebang/output/trap/typescript.ts.trap @@ -102,7 +102,7 @@ hasLocation(#20032,#20015) enclosing_stmt(#20032,#20027) expr_containers(#20032,#20001) literals("x","x",#20032) -isAbstractMember(#20030) +is_abstract_member(#20030) #20033=* typeexprs(#20033,2,#20030,2,"number") hasLocation(#20033,#20019) diff --git a/javascript/extractor/tests/ts/output/trap/conditionalTypes.ts.trap b/javascript/extractor/tests/ts/output/trap/conditionalTypes.ts.trap index 6fd78d005e6..61cca7f3cb1 100644 --- a/javascript/extractor/tests/ts/output/trap/conditionalTypes.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/conditionalTypes.ts.trap @@ -6364,7 +6364,7 @@ hasLocation(#22353,#20555) enclosing_stmt(#22353,#22342) expr_containers(#22353,#22183) literals("value","value",#22353) -isAbstractMember(#22351) +is_abstract_member(#22351) #22354=* typeexprs(#22354,0,#22351,2,"T") hasLocation(#22354,#20559) @@ -6421,7 +6421,7 @@ hasLocation(#22366,#20579) enclosing_stmt(#22366,#22355) expr_containers(#22366,#22183) literals("array","array",#22366) -isAbstractMember(#22364) +is_abstract_member(#22364) #22367=* typeexprs(#22367,6,#22364,2,"T[]") #22368=@"loc,{#10000},22,33,22,35" @@ -8066,7 +8066,7 @@ hasLocation(#22727,#21313) enclosing_stmt(#22727,#22722) expr_containers(#22727,#22183) literals("id","id",#22727) -isAbstractMember(#22725) +is_abstract_member(#22725) #22728=* typeexprs(#22728,2,#22725,2,"number") hasLocation(#22728,#21317) @@ -8084,7 +8084,7 @@ hasLocation(#22731,#21321) enclosing_stmt(#22731,#22722) expr_containers(#22731,#22183) literals("name","name",#22731) -isAbstractMember(#22729) +is_abstract_member(#22729) #22732=* typeexprs(#22732,2,#22729,2,"string") hasLocation(#22732,#21325) @@ -8102,7 +8102,7 @@ hasLocation(#22735,#21329) enclosing_stmt(#22735,#22722) expr_containers(#22735,#22183) literals("subparts","subparts",#22735) -isAbstractMember(#22733) +is_abstract_member(#22733) #22736=* typeexprs(#22736,6,#22733,2,"Part[]") #22737=@"loc,{#10000},60,17,60,22" @@ -8159,7 +8159,7 @@ hasLocation(#22748,#21349) expr_containers(#22748,#22742) literals("string","string",#22748) is_method(#22739) -isAbstractMember(#22739) +is_abstract_member(#22739) #22749=* stmts(#22749,35,#22183,31,"type T4 ... ;") #22750=@"loc,{#10000},64,3,64,41" @@ -9058,7 +9058,7 @@ hasLocation(#22959,#21726) enclosing_stmt(#22959,#22945) expr_containers(#22959,#22805) literals("a","a",#22959) -isAbstractMember(#22957) +is_abstract_member(#22957) #22960=* typeexprs(#22960,29,#22957,2,"infer U") #22961=@"loc,{#10000},86,32,86,38" @@ -9088,7 +9088,7 @@ hasLocation(#22966,#21736) enclosing_stmt(#22966,#22945) expr_containers(#22966,#22805) literals("b","b",#22966) -isAbstractMember(#22964) +is_abstract_member(#22964) #22967=* typeexprs(#22967,29,#22964,2,"infer U") #22968=@"loc,{#10000},86,44,86,50" @@ -9164,7 +9164,7 @@ hasLocation(#22983,#21768) enclosing_stmt(#22983,#22973) expr_containers(#22983,#22805) literals("a","a",#22983) -isAbstractMember(#22981) +is_abstract_member(#22981) #22984=* typeexprs(#22984,2,#22981,2,"string") hasLocation(#22984,#21772) @@ -9182,7 +9182,7 @@ hasLocation(#22987,#21776) enclosing_stmt(#22987,#22973) expr_containers(#22987,#22805) literals("b","b",#22987) -isAbstractMember(#22985) +is_abstract_member(#22985) #22988=* typeexprs(#22988,2,#22985,2,"string") hasLocation(#22988,#21780) @@ -9234,7 +9234,7 @@ hasLocation(#22999,#21800) enclosing_stmt(#22999,#22989) expr_containers(#22999,#22805) literals("a","a",#22999) -isAbstractMember(#22997) +is_abstract_member(#22997) #23000=* typeexprs(#23000,2,#22997,2,"string") hasLocation(#23000,#21804) @@ -9252,7 +9252,7 @@ hasLocation(#23003,#21808) enclosing_stmt(#23003,#22989) expr_containers(#23003,#22805) literals("b","b",#23003) -isAbstractMember(#23001) +is_abstract_member(#23001) #23004=* typeexprs(#23004,2,#23001,2,"number") hasLocation(#23004,#21812) @@ -9322,7 +9322,7 @@ hasLocation(#23019,#21838) enclosing_stmt(#23019,#23005) expr_containers(#23019,#22805) literals("a","a",#23019) -isAbstractMember(#23017) +is_abstract_member(#23017) #23020=* typeexprs(#23020,23,#23017,2,"(x: infer U) => void") #23021=@"loc,{#10000},90,32,90,51" @@ -9381,7 +9381,7 @@ hasLocation(#23034,#21860) enclosing_stmt(#23034,#23005) expr_containers(#23034,#22805) literals("b","b",#23034) -isAbstractMember(#23032) +is_abstract_member(#23032) #23035=* typeexprs(#23035,23,#23032,2,"(x: infer U) => void") #23036=@"loc,{#10000},90,57,90,76" @@ -9486,7 +9486,7 @@ hasLocation(#23059,#21904) enclosing_stmt(#23059,#23049) expr_containers(#23059,#22805) literals("a","a",#23059) -isAbstractMember(#23057) +is_abstract_member(#23057) #23060=* typeexprs(#23060,23,#23057,2,"(x: string) => void") #23061=@"loc,{#10000},91,23,91,41" @@ -9535,7 +9535,7 @@ hasLocation(#23071,#21924) enclosing_stmt(#23071,#23049) expr_containers(#23071,#22805) literals("b","b",#23071) -isAbstractMember(#23069) +is_abstract_member(#23069) #23072=* typeexprs(#23072,23,#23069,2,"(x: string) => void") #23073=@"loc,{#10000},91,47,91,65" @@ -9618,7 +9618,7 @@ hasLocation(#23091,#21960) enclosing_stmt(#23091,#23081) expr_containers(#23091,#22805) literals("a","a",#23091) -isAbstractMember(#23089) +is_abstract_member(#23089) #23092=* typeexprs(#23092,23,#23089,2,"(x: string) => void") #23093=@"loc,{#10000},92,23,92,41" @@ -9667,7 +9667,7 @@ hasLocation(#23103,#21980) enclosing_stmt(#23103,#23081) expr_containers(#23103,#22805) literals("b","b",#23103) -isAbstractMember(#23101) +is_abstract_member(#23101) #23104=* typeexprs(#23104,23,#23101,2,"(x: number) => void") #23105=@"loc,{#10000},92,47,92,65" diff --git a/javascript/extractor/tests/ts/output/trap/externalmodule.ts.trap b/javascript/extractor/tests/ts/output/trap/externalmodule.ts.trap index 920a3dfa6ab..3a25e54ea85 100644 --- a/javascript/extractor/tests/ts/output/trap/externalmodule.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/externalmodule.ts.trap @@ -347,7 +347,7 @@ hasLocation(#20112,#20065) expr_containers(#20112,#20106) literals("I","I",#20112) is_method(#20103) -isAbstractMember(#20103) +is_abstract_member(#20103) #20113=* stmts(#20113,33,#20082,2,"export = M;") #20114=@"loc,{#10000},8,3,8,13" diff --git a/javascript/extractor/tests/ts/output/trap/interfaces.ts.trap b/javascript/extractor/tests/ts/output/trap/interfaces.ts.trap index 27000100235..5176fb38002 100644 --- a/javascript/extractor/tests/ts/output/trap/interfaces.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/interfaces.ts.trap @@ -298,7 +298,7 @@ scopenesting(#20102,#20000) variables(#20103,"arguments",#20102) is_arguments_object(#20103) is_method(#20098) -isAbstractMember(#20098) +is_abstract_member(#20098) #20104=* properties(#20104,#20095,3,0,"bar(x: ... string;") #20105=@"loc,{#10000},3,3,3,25" @@ -341,7 +341,7 @@ hasLocation(#20113,#20047) expr_containers(#20113,#20107) literals("number","number",#20113) is_method(#20104) -isAbstractMember(#20104) +is_abstract_member(#20104) #20114=* properties(#20114,#20095,4,8,"field: number;") #20115=@"loc,{#10000},4,3,4,16" @@ -353,7 +353,7 @@ hasLocation(#20116,#20057) enclosing_stmt(#20116,#20095) expr_containers(#20116,#20001) literals("field","field",#20116) -isAbstractMember(#20114) +is_abstract_member(#20114) #20117=* typeexprs(#20117,2,#20114,2,"number") hasLocation(#20117,#20061) @@ -422,7 +422,7 @@ scopenesting(#20132,#20121) variables(#20133,"arguments",#20132) is_arguments_object(#20133) is_method(#20128) -isAbstractMember(#20128) +is_abstract_member(#20128) #20134=* entry_cfg_node(#20134,#20001) #20135=@"loc,{#10000},1,1,1,0" diff --git a/javascript/extractor/tests/ts/output/trap/mappedTypeModifiers.ts.trap b/javascript/extractor/tests/ts/output/trap/mappedTypeModifiers.ts.trap index fb9f89cd797..243a468d637 100644 --- a/javascript/extractor/tests/ts/output/trap/mappedTypeModifiers.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/mappedTypeModifiers.ts.trap @@ -1123,7 +1123,7 @@ hasLocation(#20366,#20233) enclosing_stmt(#20366,#20359) expr_containers(#20366,#20265) literals("a","a",#20366) -isAbstractMember(#20364) +is_abstract_member(#20364) isOptionalMember(#20364) #20367=* typeexprs(#20367,2,#20364,2,"string") diff --git a/javascript/extractor/tests/ts/output/trap/nobody.ts.trap b/javascript/extractor/tests/ts/output/trap/nobody.ts.trap index d57325b22f9..5116196ad1c 100644 --- a/javascript/extractor/tests/ts/output/trap/nobody.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/nobody.ts.trap @@ -761,7 +761,7 @@ scopenesting(#20268,#20263) variables(#20269,"arguments",#20268) is_arguments_object(#20269) is_method(#20264) -isAbstractMember(#20264) +is_abstract_member(#20264) #20270=* properties(#20270,#20260,3,0,"g(x: nu ... number;") #20271=@"loc,{#10000},9,3,9,23" @@ -900,7 +900,7 @@ exprs(#20304,0,#20301,0,"x") hasLocation(#20304,#20159) expr_containers(#20304,#20303) literals("x","x",#20304) -isAbstractMember(#20301) +is_abstract_member(#20301) #20305=* typeexprs(#20305,2,#20301,2,"number") hasLocation(#20305,#20163) @@ -979,7 +979,7 @@ scopenesting(#20321,#20316) variables(#20322,"arguments",#20321) is_arguments_object(#20322) is_method(#20317) -isAbstractMember(#20317) +is_abstract_member(#20317) #20323=* properties(#20323,#20312,3,0,"g(x: nu ... number;") #20324=@"loc,{#10000},23,3,23,23" @@ -1118,7 +1118,7 @@ exprs(#20357,0,#20354,0,"x") hasLocation(#20357,#20242) expr_containers(#20357,#20356) literals("x","x",#20357) -isAbstractMember(#20354) +is_abstract_member(#20354) #20358=* typeexprs(#20358,2,#20354,2,"number") hasLocation(#20358,#20246) diff --git a/javascript/extractor/tests/ts/output/trap/thisparameter.ts.trap b/javascript/extractor/tests/ts/output/trap/thisparameter.ts.trap index 358174db91f..ba715d4498f 100644 --- a/javascript/extractor/tests/ts/output/trap/thisparameter.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/thisparameter.ts.trap @@ -691,7 +691,7 @@ expr_containers(#20226,#20223) literals("I","I",#20226) typebind(#20226,#20163) is_method(#20220) -isAbstractMember(#20220) +is_abstract_member(#20220) #20227=* entry_cfg_node(#20227,#20001) #20228=@"loc,{#10000},1,1,1,0" diff --git a/javascript/extractor/tests/ts/output/trap/typeannotations.ts.trap b/javascript/extractor/tests/ts/output/trap/typeannotations.ts.trap index 7ba2bb1956b..c852a24bc7e 100644 --- a/javascript/extractor/tests/ts/output/trap/typeannotations.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/typeannotations.ts.trap @@ -2529,7 +2529,7 @@ hasLocation(#20985,#20139) enclosing_stmt(#20985,#20981) expr_containers(#20985,#20001) literals("x","x",#20985) -isAbstractMember(#20983) +is_abstract_member(#20983) #20986=* typeexprs(#20986,2,#20983,2,"number") hasLocation(#20986,#20143) @@ -2547,7 +2547,7 @@ hasLocation(#20989,#20147) enclosing_stmt(#20989,#20981) expr_containers(#20989,#20001) literals("y","y",#20989) -isAbstractMember(#20987) +is_abstract_member(#20987) #20990=* typeexprs(#20990,2,#20987,2,"number") hasLocation(#20990,#20151) @@ -2907,7 +2907,7 @@ hasLocation(#21069,#20296) enclosing_stmt(#21069,#21061) expr_containers(#21069,#20001) literals("x","x",#21069) -isAbstractMember(#21067) +is_abstract_member(#21067) #21070=* typeexprs(#21070,2,#21067,2,"number") hasLocation(#21070,#20300) @@ -2950,7 +2950,7 @@ hasLocation(#21079,#20314) enclosing_stmt(#21079,#21071) expr_containers(#21079,#20001) literals("x","x",#21079) -isAbstractMember(#21077) +is_abstract_member(#21077) #21080=* typeexprs(#21080,21,#21077,2,"{ y: number }") #21081=@"loc,{#10000},19,30,19,42" @@ -2969,7 +2969,7 @@ hasLocation(#21084,#20320) enclosing_stmt(#21084,#21071) expr_containers(#21084,#20001) literals("y","y",#21084) -isAbstractMember(#21082) +is_abstract_member(#21082) #21085=* typeexprs(#21085,2,#21082,2,"number") hasLocation(#21085,#20324) @@ -4116,7 +4116,7 @@ hasLocation(#21338,#20770) enclosing_stmt(#21338,#21329) expr_containers(#21338,#20001) literals("field","field",#21338) -isAbstractMember(#21336) +is_abstract_member(#21336) #21339=* typeexprs(#21339,0,#21336,2,"T") hasLocation(#21339,#20774) @@ -4168,7 +4168,7 @@ expr_containers(#21349,#21343) literals("T","T",#21349) typebind(#21349,#21332) is_method(#21340) -isAbstractMember(#21340) +is_abstract_member(#21340) #21350=* stmts(#21350,26,#20001,44,"abstrac ... ): T;\n}") #21351=@"loc,{#10000},54,1,57,1" @@ -4285,7 +4285,7 @@ expr_containers(#21375,#21369) literals("T","T",#21375) typebind(#21375,#21354) is_method(#21366) -isAbstractMember(#21366) +is_abstract_member(#21366) #21376=* properties(#21376,#21350,4,0,"constructor() {}") #21377=@"loc,{#10000},54,63,54,62" diff --git a/javascript/extractor/tests/ts/output/trap/uninstantiatedNamespace.ts.trap b/javascript/extractor/tests/ts/output/trap/uninstantiatedNamespace.ts.trap index bd5174ad5d5..ad546cdc0fa 100644 --- a/javascript/extractor/tests/ts/output/trap/uninstantiatedNamespace.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/uninstantiatedNamespace.ts.trap @@ -776,7 +776,7 @@ hasLocation(#20264,#20125) enclosing_stmt(#20264,#20259) expr_containers(#20264,#20254) literals("x","x",#20264) -isAbstractMember(#20262) +is_abstract_member(#20262) #20265=* typeexprs(#20265,2,#20262,2,"number") hasLocation(#20265,#20129) @@ -812,7 +812,7 @@ hasLocation(#20272,#20141) expr_containers(#20272,#20269) literals("number","number",#20272) is_method(#20266) -isAbstractMember(#20266) +is_abstract_member(#20266) #20273=* stmts(#20273,31,#20212,5,"namespa ... ent {;}") #20274=@"loc,{#10000},21,3,21,30" diff --git a/javascript/ql/src/semmle/javascript/Aliases.qll b/javascript/ql/src/semmle/javascript/Aliases.qll index 5e6bb768dfb..b8219b06c8d 100644 --- a/javascript/ql/src/semmle/javascript/Aliases.qll +++ b/javascript/ql/src/semmle/javascript/Aliases.qll @@ -155,3 +155,8 @@ deprecated predicate isMethod(Property prop) { is_method(prop) } * Use `MemberDeclaration#isStatic()` instead. */ deprecated predicate isStatic(Property prop) { is_static(prop) } +/** + * Alias for the predicate `is_abstract_member` defined in the .dbscheme. + * Use `MemberDeclaration#isAbstract()` instead. + */ +deprecated predicate isAbstractMember(Property prop) { is_abstract_member(prop) } diff --git a/javascript/ql/src/semmle/javascript/Classes.qll b/javascript/ql/src/semmle/javascript/Classes.qll index a28b9913ca2..9a2734f15b2 100644 --- a/javascript/ql/src/semmle/javascript/Classes.qll +++ b/javascript/ql/src/semmle/javascript/Classes.qll @@ -479,7 +479,7 @@ class MemberDeclaration extends @property, Documentable { * * Abstract members occur only in TypeScript. */ - predicate isAbstract() { isAbstractMember(this) } + predicate isAbstract() { is_abstract_member(this) } /** * Holds if this member is public, either because it has no access modifier or diff --git a/javascript/ql/src/semmlecode.javascript.dbscheme b/javascript/ql/src/semmlecode.javascript.dbscheme index 0a274cd3543..91780095de4 100644 --- a/javascript/ql/src/semmlecode.javascript.dbscheme +++ b/javascript/ql/src/semmlecode.javascript.dbscheme @@ -516,7 +516,7 @@ case @property.kind of is_computed (int id: @property ref); is_method (int id: @property ref); is_static (int id: @property ref); -isAbstractMember (int id: @property ref); +is_abstract_member (int id: @property ref); isConstEnum (int id: @enumdeclaration ref); isAbstractClass (int id: @classdeclstmt ref); diff --git a/javascript/ql/src/semmlecode.javascript.dbscheme.stats b/javascript/ql/src/semmlecode.javascript.dbscheme.stats index 820531da8e0..183a33eef36 100644 --- a/javascript/ql/src/semmlecode.javascript.dbscheme.stats +++ b/javascript/ql/src/semmlecode.javascript.dbscheme.stats @@ -7941,7 +7941,7 @@ -isAbstractMember +is_abstract_member 66 diff --git a/javascript/upgrades/c73fbfca57f3d593b9ff50c6aa3a886d6888efec/upgrade.properties b/javascript/upgrades/c73fbfca57f3d593b9ff50c6aa3a886d6888efec/upgrade.properties index c37153f9329..9198f9627ea 100644 --- a/javascript/upgrades/c73fbfca57f3d593b9ff50c6aa3a886d6888efec/upgrade.properties +++ b/javascript/upgrades/c73fbfca57f3d593b9ff50c6aa3a886d6888efec/upgrade.properties @@ -36,3 +36,5 @@ is_method.rel: reorder isMethod.rel(int prop) prop isMethod.rel: delete is_static.rel: reorder isStatic.rel(int prop) prop isStatic.rel: delete +is_abstract_member.rel: reorder isAbstractMember.rel(int prop) prop +isAbstractMember.rel: delete