You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by jo...@apache.org on 2021/09/09 22:12:55 UTC

[royale-compiler] 01/03: formatter: fix indentation of methods in interfaces

This is an automated email from the ASF dual-hosted git repository.

joshtynjala pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-compiler.git

commit 583f4e2ade3e8d6510395e2254d66236ddf4e9f0
Author: Josh Tynjala <jo...@apache.org>
AuthorDate: Thu Sep 9 14:12:12 2021 -0700

    formatter: fix indentation of methods in interfaces
---
 .../org/apache/royale/formatter/FORMATTER.java     |  7 ++-
 .../royale/formatter/TestInterfaceDeclaration.java | 52 ++++++++++++++++++++++
 2 files changed, 58 insertions(+), 1 deletion(-)

diff --git a/formatter/src/main/java/org/apache/royale/formatter/FORMATTER.java b/formatter/src/main/java/org/apache/royale/formatter/FORMATTER.java
index 19970db..7959d31 100644
--- a/formatter/src/main/java/org/apache/royale/formatter/FORMATTER.java
+++ b/formatter/src/main/java/org/apache/royale/formatter/FORMATTER.java
@@ -718,7 +718,12 @@ class FORMATTER {
 										&& prevStackItem.token.getType() != ASTokenTypes.TOKEN_KEYWORD_DEFAULT
 										&& prevStackItem.blockDepth <= 0) {
 									blockStack.remove(blockStack.size() - 1);
-									indent = decreaseIndent(indent);
+									if (prevStackItem.token.getType() != ASTokenTypes.TOKEN_KEYWORD_CLASS
+										&& prevStackItem.token.getType() != ASTokenTypes.TOKEN_KEYWORD_INTERFACE
+										&& prevStackItem.token.getType() != ASTokenTypes.TOKEN_KEYWORD_FUNCTION)
+									{
+										indent = decreaseIndent(indent);
+									}
 								}
 							}
 						}
diff --git a/formatter/src/test/java/org/apache/royale/formatter/TestInterfaceDeclaration.java b/formatter/src/test/java/org/apache/royale/formatter/TestInterfaceDeclaration.java
index e259d13..149ab72 100644
--- a/formatter/src/test/java/org/apache/royale/formatter/TestInterfaceDeclaration.java
+++ b/formatter/src/test/java/org/apache/royale/formatter/TestInterfaceDeclaration.java
@@ -115,4 +115,56 @@ public class TestInterfaceDeclaration extends BaseFormatterTests {
 				// @formatter:on
 				result);
 	}
+
+	@Test
+	public void testOneMethod() {
+		FORMATTER formatter = new FORMATTER();
+		formatter.insertSpaceAfterKeywordsInControlFlowStatements = true;
+		formatter.placeOpenBraceOnNewLine = true;
+		formatter.insertSpaces = false;
+		String result = formatter.formatText(
+		// @formatter:off
+			"interface MyInterface\n" +
+			"{\n" +
+			"\tfunction myMethod():void;\n" +
+			"}",
+			// @formatter:on
+			problems
+		);
+		assertEquals(
+		// @formatter:off
+				"interface MyInterface\n" +
+				"{\n" +
+				"\tfunction myMethod():void;\n" +
+				"}",
+				// @formatter:on
+				result);
+	}
+
+	@Test
+	public void testMultipleMethods() {
+		FORMATTER formatter = new FORMATTER();
+		formatter.insertSpaceAfterKeywordsInControlFlowStatements = true;
+		formatter.placeOpenBraceOnNewLine = true;
+		formatter.insertSpaces = false;
+		String result = formatter.formatText(
+		// @formatter:off
+			"interface MyInterface\n" +
+			"{\n" +
+			"\tfunction myMethod1():void;\n" +
+			"\tfunction myMethod2():void;\n" +
+			"}",
+			// @formatter:on
+			problems
+		);
+		assertEquals(
+		// @formatter:off
+				"interface MyInterface\n" +
+				"{\n" +
+				"\tfunction myMethod1():void;\n" +
+				"\tfunction myMethod2():void;\n" +
+				"}",
+				// @formatter:on
+				result);
+	}
 }