From 0f2de466482b677abc2db648e8e56147abda81b0 Mon Sep 17 00:00:00 2001 From: Asger F Date: Fri, 27 Feb 2026 11:44:54 +0100 Subject: [PATCH] JS: Emit variable bindings for 'this' expressions --- .../src/com/semmle/js/extractor/ASTExtractor.java | 9 +++++++++ javascript/ql/lib/semmlecode.javascript.dbscheme | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/javascript/extractor/src/com/semmle/js/extractor/ASTExtractor.java b/javascript/extractor/src/com/semmle/js/extractor/ASTExtractor.java index 7eee8b628f7..b4739b061fb 100644 --- a/javascript/extractor/src/com/semmle/js/extractor/ASTExtractor.java +++ b/javascript/extractor/src/com/semmle/js/extractor/ASTExtractor.java @@ -1896,6 +1896,15 @@ public class ASTExtractor { return visit((ThisExpression) nd, c); } + @Override + public Label visit(ThisExpression nd, Context c) { + Label key = super.visit(nd, c); + if (c.idcontext == IdContext.VAR_BIND || c.idcontext == IdContext.VAR_IN_TYPE_BIND) { + addVariableBinding("bind", key, "this"); + } + return key; + } + @Override public Label visit(JSXMemberExpression nd, Context c) { Label key = super.visit(nd, c); diff --git a/javascript/ql/lib/semmlecode.javascript.dbscheme b/javascript/ql/lib/semmlecode.javascript.dbscheme index 578367e82a2..26a123164be 100644 --- a/javascript/ql/lib/semmlecode.javascript.dbscheme +++ b/javascript/ql/lib/semmlecode.javascript.dbscheme @@ -453,7 +453,7 @@ is_arguments_object (int id: @variable ref); @lexical_name = @variable | @local_type_name | @local_namespace_name; -@bind_id = @varaccess | @local_var_type_access; +@bind_id = @varaccess | @local_var_type_access | @this_expr; bind (unique int id: @bind_id ref, int decl: @variable ref);