diff --git a/javascript/extractor/src/com/semmle/js/ast/DefaultVisitor.java b/javascript/extractor/src/com/semmle/js/ast/DefaultVisitor.java index 7e18ebdfa6a..c450fdd0468 100644 --- a/javascript/extractor/src/com/semmle/js/ast/DefaultVisitor.java +++ b/javascript/extractor/src/com/semmle/js/ast/DefaultVisitor.java @@ -785,6 +785,6 @@ public class DefaultVisitor implements Visitor { @Override public R visit(StaticInitializer nd, C c) { - return visit((MemberDefinition) nd, c); + return visit((MemberDefinition) nd, c); } } diff --git a/javascript/extractor/src/com/semmle/js/ast/MemberDefinition.java b/javascript/extractor/src/com/semmle/js/ast/MemberDefinition.java index 7cacafa96ed..e3bbc6a1830 100644 --- a/javascript/extractor/src/com/semmle/js/ast/MemberDefinition.java +++ b/javascript/extractor/src/com/semmle/js/ast/MemberDefinition.java @@ -9,7 +9,7 @@ import java.util.List; *

A member definition has a name and an optional initial value, whose type is given by the type * parameter {@code V}. */ -public abstract class MemberDefinition extends Node { +public abstract class MemberDefinition extends Node { /** A bitmask of flags defined in {@linkplain DeclarationFlags}. */ private final int flags; @@ -21,7 +21,7 @@ public abstract class MemberDefinition extends Node { */ private final Expression key; - /** The initial value of the member. */ + /** The initial value / initializer of the member. */ private final V value; /** The decorators applied to this member, if any. */ diff --git a/javascript/extractor/src/com/semmle/js/ast/NodeCopier.java b/javascript/extractor/src/com/semmle/js/ast/NodeCopier.java index 402f2400a62..83a37e11534 100644 --- a/javascript/extractor/src/com/semmle/js/ast/NodeCopier.java +++ b/javascript/extractor/src/com/semmle/js/ast/NodeCopier.java @@ -902,6 +902,6 @@ public class NodeCopier implements Visitor { @Override public INode visit(StaticInitializer nd, Void c) { - return new StaticInitializer(visit(nd.getLoc()), copy(nd.getBody())); + return new StaticInitializer(visit(nd.getLoc()), copy(nd.getValue())); } } diff --git a/javascript/extractor/src/com/semmle/js/ast/StaticInitializer.java b/javascript/extractor/src/com/semmle/js/ast/StaticInitializer.java index be4d5e54548..d4287cd3f49 100644 --- a/javascript/extractor/src/com/semmle/js/ast/StaticInitializer.java +++ b/javascript/extractor/src/com/semmle/js/ast/StaticInitializer.java @@ -1,30 +1,12 @@ package com.semmle.js.ast; /** - * A static initializer block in a class. - * E.g. - * ```TypeScript - * class Foo { - * static bar : number; - * static { - * Foo.bar = 42; - * } - * } + * A static initializer block in a class. E.g. ```TypeScript class Foo { static + * bar : number; static { Foo.bar = 42; } } */ -public class StaticInitializer extends MemberDefinition { - private final BlockStatement body; - +public class StaticInitializer extends MemberDefinition { public StaticInitializer(SourceLocation loc, BlockStatement body) { - super("StaticInitializer", loc, DeclarationFlags.static_, null, null); - this.body = body; - } - - /** - * Gets the body of this static initializer. - * @return The body of this static initializer. - */ - public BlockStatement getBody() { - return body; + super("StaticInitializer", loc, DeclarationFlags.static_, null, body); } @Override @@ -32,7 +14,6 @@ public class StaticInitializer extends MemberDefinition { return false; } - @Override public R accept(Visitor v, C c) { return v.visit(this, c); diff --git a/javascript/extractor/src/com/semmle/js/extractor/ASTExtractor.java b/javascript/extractor/src/com/semmle/js/extractor/ASTExtractor.java index 3f048b99db3..158a33030a4 100644 --- a/javascript/extractor/src/com/semmle/js/extractor/ASTExtractor.java +++ b/javascript/extractor/src/com/semmle/js/extractor/ASTExtractor.java @@ -1646,11 +1646,6 @@ public class ASTExtractor { } } - if (nd instanceof StaticInitializer) { - StaticInitializer si = (StaticInitializer) nd; - visit(si.getBody(), methkey, 3, IdContext.VAR_BIND); - } - if (nd instanceof FieldDefinition) { FieldDefinition field = (FieldDefinition) nd; if (field.isParameterField() && constructorKey != null) { diff --git a/javascript/extractor/src/com/semmle/js/extractor/CFGExtractor.java b/javascript/extractor/src/com/semmle/js/extractor/CFGExtractor.java index 73facb7ea47..fa8452c0b43 100644 --- a/javascript/extractor/src/com/semmle/js/extractor/CFGExtractor.java +++ b/javascript/extractor/src/com/semmle/js/extractor/CFGExtractor.java @@ -1165,7 +1165,7 @@ public class CFGExtractor { private Void visit(Node nd, AClass ac, SuccessorInfo i) { for (MemberDefinition md : ac.getBody().getBody()) { - if (md.isConstructor() && md.isConcrete()) constructor2Class.put(md.getValue(), ac); + if (md.isConstructor() && md.isConcrete()) constructor2Class.put((Expression)md.getValue(), ac); } visitSequence(ac.getId(), ac.getSuperClass(), ac.getBody(), nd); writeSuccessors(nd, visitSequence(getStaticInitializers(ac.getBody()), getDecoratorsOfClass(ac), i.getAllSuccessors())); @@ -1627,7 +1627,7 @@ public class CFGExtractor { List nodes = new ArrayList<>(); for (MemberDefinition node : nd.getBody()) { if (node instanceof FieldDefinition && ((FieldDefinition)node).isStatic()) nodes.add(node); - if (node instanceof StaticInitializer) nodes.add(((StaticInitializer)node).getBody()); + if (node instanceof StaticInitializer) nodes.add(node.getValue()); } return nodes; }