diff --git a/webcommon/javascript2.editor/src/org/netbeans/modules/javascript2/editor/formatter/JsFormatVisitor.java b/webcommon/javascript2.editor/src/org/netbeans/modules/javascript2/editor/formatter/JsFormatVisitor.java index d629e6b20af5..d9055e96f9ed 100644 --- a/webcommon/javascript2.editor/src/org/netbeans/modules/javascript2/editor/formatter/JsFormatVisitor.java +++ b/webcommon/javascript2.editor/src/org/netbeans/modules/javascript2/editor/formatter/JsFormatVisitor.java @@ -969,13 +969,15 @@ public boolean enterVarNode(VarNode varNode) { @Override public boolean enterClassElement(ClassElement propertyNode) { - FormatToken colon = tokenUtils.getNextToken(getFinish(propertyNode.getKey()), - JsTokenId.OPERATOR_COLON, getFinish(propertyNode)); - if (colon != null) { - TokenUtils.appendToken(colon, FormatToken.forFormat(FormatToken.Kind.AFTER_PROPERTY_OPERATOR)); - FormatToken before = colon.previous(); - if (before != null) { - TokenUtils.appendTokenAfterLastVirtual(before, FormatToken.forFormat(FormatToken.Kind.BEFORE_PROPERTY_OPERATOR)); + if (propertyNode.getKey() != null) { + FormatToken colon = tokenUtils.getNextToken(getFinish(propertyNode.getKey()), + JsTokenId.OPERATOR_COLON, getFinish(propertyNode)); + if (colon != null) { + TokenUtils.appendToken(colon, FormatToken.forFormat(FormatToken.Kind.AFTER_PROPERTY_OPERATOR)); + FormatToken before = colon.previous(); + if (before != null) { + TokenUtils.appendTokenAfterLastVirtual(before, FormatToken.forFormat(FormatToken.Kind.BEFORE_PROPERTY_OPERATOR)); + } } } return super.enterPropertyNode(propertyNode); diff --git a/webcommon/javascript2.editor/test/unit/data/testfiles/formatter/staticClassInitializer1.js b/webcommon/javascript2.editor/test/unit/data/testfiles/formatter/staticClassInitializer1.js new file mode 100644 index 000000000000..e9fdff9dce93 --- /dev/null +++ b/webcommon/javascript2.editor/test/unit/data/testfiles/formatter/staticClassInitializer1.js @@ -0,0 +1,9 @@ +class Dummy { + #privateField; + constructor(v) { + this.#privateField = v; + } + static { + console.log("Dummy"); + } + } diff --git a/webcommon/javascript2.editor/test/unit/data/testfiles/formatter/staticClassInitializer1.js.formatted b/webcommon/javascript2.editor/test/unit/data/testfiles/formatter/staticClassInitializer1.js.formatted new file mode 100644 index 000000000000..054903448d51 --- /dev/null +++ b/webcommon/javascript2.editor/test/unit/data/testfiles/formatter/staticClassInitializer1.js.formatted @@ -0,0 +1,9 @@ +class Dummy { + #privateField; + constructor(v) { + this.#privateField = v; + } + static { + console.log("Dummy"); + } +} diff --git a/webcommon/javascript2.editor/test/unit/src/org/netbeans/modules/javascript2/editor/formatter/JsFormatterTest.java b/webcommon/javascript2.editor/test/unit/src/org/netbeans/modules/javascript2/editor/formatter/JsFormatterTest.java index d674099ef127..d619cbf19d7a 100644 --- a/webcommon/javascript2.editor/test/unit/src/org/netbeans/modules/javascript2/editor/formatter/JsFormatterTest.java +++ b/webcommon/javascript2.editor/test/unit/src/org/netbeans/modules/javascript2/editor/formatter/JsFormatterTest.java @@ -2543,4 +2543,8 @@ public void testCommentAtTheEdnOfLine() throws Exception { "} //comment2\n" + "p = stripName(p);", null); } + + public void testFormatStaticClassInitializer() throws Exception { + reformatFileContents("testfiles/formatter/staticClassInitializer1.js",new IndentPrefs(4, 4)); + } }