diff --git a/idea/src/org/jetbrains/kotlin/idea/formatter/KotlinCommonCodeStyleSettings.java b/idea/src/org/jetbrains/kotlin/idea/formatter/KotlinCommonCodeStyleSettings.java new file mode 100644 index 00000000000..893af606396 --- /dev/null +++ b/idea/src/org/jetbrains/kotlin/idea/formatter/KotlinCommonCodeStyleSettings.java @@ -0,0 +1,198 @@ +/* + * Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.idea.formatter; + +import com.intellij.lang.Language; +import com.intellij.openapi.util.DefaultJDOMExternalizer; +import com.intellij.openapi.util.DifferenceFilter; +import com.intellij.openapi.util.InvalidDataException; +import com.intellij.openapi.util.WriteExternalException; +import com.intellij.psi.codeStyle.CodeStyleSettings; +import com.intellij.psi.codeStyle.CommonCodeStyleSettings; +import com.intellij.psi.codeStyle.LanguageCodeStyleSettingsProvider; +import com.intellij.psi.codeStyle.arrangement.ArrangementSettings; +import com.intellij.psi.codeStyle.arrangement.ArrangementUtil; +import com.intellij.util.ReflectionUtil; +import com.intellij.util.xmlb.XmlSerializer; +import kotlin.collections.ArraysKt; +import org.jdom.Element; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import org.jetbrains.kotlin.idea.KotlinLanguage; + +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.List; +import java.util.Set; + +@SuppressWarnings("UnnecessaryFinalOnLocalVariableOrParameter") +public class KotlinCommonCodeStyleSettings extends CommonCodeStyleSettings { + public KotlinCommonCodeStyleSettings() { + super(KotlinLanguage.INSTANCE); + } + + // + @Override + public void readExternal(Element element) throws InvalidDataException { + super.readExternal(element); + } + + @Override + public void writeExternal(Element element) throws WriteExternalException { + CommonCodeStyleSettings defaultSettings = getDefaultSettings(); + Set supportedFields = getSupportedFields(); + if (supportedFields != null) { + supportedFields.add("FORCE_REARRANGE_MODE"); + } + //noinspection deprecation + DefaultJDOMExternalizer.writeExternal(this, element, new SupportedFieldsDiffFilter(this, supportedFields, defaultSettings)); + List softMargins = getSoftMargins(); + serializeInto(softMargins, element); + + IndentOptions myIndentOptions = getIndentOptions(); + if (myIndentOptions != null) { + IndentOptions defaultIndentOptions = defaultSettings != null ? defaultSettings.getIndentOptions() : null; + Element indentOptionsElement = new Element(INDENT_OPTIONS_TAG); + myIndentOptions.serialize(indentOptionsElement, defaultIndentOptions); + if (!indentOptionsElement.getChildren().isEmpty()) { + element.addContent(indentOptionsElement); + } + } + + ArrangementSettings myArrangementSettings = getArrangementSettings(); + if (myArrangementSettings != null) { + Element container = new Element(ARRANGEMENT_ELEMENT_NAME); + ArrangementUtil.writeExternal(container, myArrangementSettings, myLanguage); + if (!container.getChildren().isEmpty()) { + element.addContent(container); + } + } + } + + @Override + public CommonCodeStyleSettings clone(@NotNull CodeStyleSettings rootSettings) { + CommonCodeStyleSettings commonSettings = new KotlinCommonCodeStyleSettings(); + copyPublicFieldsOwn(this, commonSettings); + + try { + Method setRootSettingsMethod = CommonCodeStyleSettings.class.getDeclaredMethod("setRootSettings", CodeStyleSettings.class); + setRootSettingsMethod.setAccessible(true); + setRootSettingsMethod.invoke(commonSettings, rootSettings); + } + catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { + throw new IllegalStateException(e); + } + + commonSettings.setForceArrangeMenuAvailable(isForceArrangeMenuAvailable()); + + IndentOptions indentOptions = getIndentOptions(); + if (indentOptions != null) { + IndentOptions targetIndentOptions = commonSettings.initIndentOptions(); + targetIndentOptions.copyFrom(indentOptions); + } + + ArrangementSettings arrangementSettings = getArrangementSettings(); + if (arrangementSettings != null) { + commonSettings.setArrangementSettings(arrangementSettings.clone()); + } + + try { + Method setRootSettingsMethod = ArraysKt.singleOrNull( + CommonCodeStyleSettings.class.getDeclaredMethods(), + method -> "setSoftMargins".equals(method.getName())); + + if (setRootSettingsMethod != null) { + // Method was introduced in 173 + setRootSettingsMethod.setAccessible(true); + setRootSettingsMethod.invoke(commonSettings, getSoftMargins()); + } + } + catch (IllegalAccessException | InvocationTargetException e) { + throw new IllegalStateException(e); + } + + return commonSettings; + } + + @Override + public boolean equals(Object obj) { + if (!(obj instanceof KotlinCommonCodeStyleSettings)) { + return false; + } + + if (!ReflectionUtil.comparePublicNonFinalFields(this, obj)) { + return false; + } + + CommonCodeStyleSettings other = (CommonCodeStyleSettings) obj; + if (!getSoftMargins().equals(other.getSoftMargins())) { + return false; + } + + IndentOptions options = getIndentOptions(); + if ((options == null && other.getIndentOptions() != null) || + (options != null && !options.equals(other.getIndentOptions()))) { + return false; + } + + return arrangementSettingsEqual(other); + } + + // SoftMargins.serializeInfo + private void serializeInto(@NotNull List softMargins, @NotNull Element element) { + if (softMargins.size() > 0) { + XmlSerializer.serializeInto(this, element); + } + } + // + + // + private static final String INDENT_OPTIONS_TAG = "indentOptions"; + private static final String ARRANGEMENT_ELEMENT_NAME = "arrangement"; + + private final Language myLanguage = KotlinLanguage.INSTANCE; + + @Nullable + private CommonCodeStyleSettings getDefaultSettings() { + return LanguageCodeStyleSettingsProvider.getDefaultCommonSettings(myLanguage); + } + + @Nullable + private Set getSupportedFields() { + final LanguageCodeStyleSettingsProvider provider = LanguageCodeStyleSettingsProvider.forLanguage(myLanguage); + return provider == null ? null : provider.getSupportedFields(); + } + + private static class SupportedFieldsDiffFilter extends DifferenceFilter { + private final Set mySupportedFieldNames; + + public SupportedFieldsDiffFilter( + final CommonCodeStyleSettings object, + Set supportedFiledNames, + final CommonCodeStyleSettings parentObject + ) { + super(object, parentObject); + mySupportedFieldNames = supportedFiledNames; + } + + @Override + public boolean isAccept(@NotNull Field field) { + if (mySupportedFieldNames == null || + mySupportedFieldNames.contains(field.getName())) { + return super.isAccept(field); + } + return false; + } + } + + // Can't use super.copyPublicFields because the method is internal in 181 + private static void copyPublicFieldsOwn(Object from, Object to) { + assert from != to; + com.intellij.util.ReflectionUtil.copyFields(to.getClass().getFields(), from, to); + } + // +} diff --git a/idea/src/org/jetbrains/kotlin/idea/formatter/KotlinLanguageCodeStyleSettingsProvider.kt b/idea/src/org/jetbrains/kotlin/idea/formatter/KotlinLanguageCodeStyleSettingsProvider.kt index 1007f323083..b5dd2913a84 100644 --- a/idea/src/org/jetbrains/kotlin/idea/formatter/KotlinLanguageCodeStyleSettingsProvider.kt +++ b/idea/src/org/jetbrains/kotlin/idea/formatter/KotlinLanguageCodeStyleSettingsProvider.kt @@ -188,156 +188,192 @@ class KotlinLanguageCodeStyleSettingsProvider : LanguageCodeStyleSettingsProvide when (settingsType) { LanguageCodeStyleSettingsProvider.SettingsType.SPACING_SETTINGS -> { consumer.showStandardOptions( - "SPACE_AROUND_ASSIGNMENT_OPERATORS", - "SPACE_AROUND_LOGICAL_OPERATORS", - "SPACE_AROUND_EQUALITY_OPERATORS", - "SPACE_AROUND_RELATIONAL_OPERATORS", - "SPACE_AROUND_ADDITIVE_OPERATORS", - "SPACE_AROUND_MULTIPLICATIVE_OPERATORS", - "SPACE_AROUND_UNARY_OPERATOR", - "SPACE_AFTER_COMMA", - "SPACE_BEFORE_COMMA", - "SPACE_BEFORE_IF_PARENTHESES", - "SPACE_BEFORE_WHILE_PARENTHESES", - "SPACE_BEFORE_FOR_PARENTHESES", - "SPACE_BEFORE_CATCH_PARENTHESES" + "SPACE_AROUND_ASSIGNMENT_OPERATORS", + "SPACE_AROUND_LOGICAL_OPERATORS", + "SPACE_AROUND_EQUALITY_OPERATORS", + "SPACE_AROUND_RELATIONAL_OPERATORS", + "SPACE_AROUND_ADDITIVE_OPERATORS", + "SPACE_AROUND_MULTIPLICATIVE_OPERATORS", + "SPACE_AROUND_UNARY_OPERATOR", + "SPACE_AFTER_COMMA", + "SPACE_BEFORE_COMMA", + "SPACE_BEFORE_IF_PARENTHESES", + "SPACE_BEFORE_WHILE_PARENTHESES", + "SPACE_BEFORE_FOR_PARENTHESES", + "SPACE_BEFORE_CATCH_PARENTHESES" ); - showCustomOption(KotlinCodeStyleSettings::SPACE_AROUND_RANGE, - "Range operator (..)", - CodeStyleSettingsCustomizable.SPACES_AROUND_OPERATORS) + showCustomOption( + KotlinCodeStyleSettings::SPACE_AROUND_RANGE, + "Range operator (..)", + CodeStyleSettingsCustomizable.SPACES_AROUND_OPERATORS + ) - showCustomOption(KotlinCodeStyleSettings::SPACE_BEFORE_TYPE_COLON, - "Before colon, after declaration name", - CodeStyleSettingsCustomizable.SPACES_OTHER) + showCustomOption( + KotlinCodeStyleSettings::SPACE_BEFORE_TYPE_COLON, + "Before colon, after declaration name", + CodeStyleSettingsCustomizable.SPACES_OTHER + ) - showCustomOption(KotlinCodeStyleSettings::SPACE_AFTER_TYPE_COLON, - "After colon, before declaration type", - CodeStyleSettingsCustomizable.SPACES_OTHER) + showCustomOption( + KotlinCodeStyleSettings::SPACE_AFTER_TYPE_COLON, + "After colon, before declaration type", + CodeStyleSettingsCustomizable.SPACES_OTHER + ) - showCustomOption(KotlinCodeStyleSettings::SPACE_BEFORE_EXTEND_COLON, - "Before colon in new type definition", - CodeStyleSettingsCustomizable.SPACES_OTHER) + showCustomOption( + KotlinCodeStyleSettings::SPACE_BEFORE_EXTEND_COLON, + "Before colon in new type definition", + CodeStyleSettingsCustomizable.SPACES_OTHER + ) - showCustomOption(KotlinCodeStyleSettings::SPACE_AFTER_EXTEND_COLON, - "After colon in new type definition", - CodeStyleSettingsCustomizable.SPACES_OTHER) + showCustomOption( + KotlinCodeStyleSettings::SPACE_AFTER_EXTEND_COLON, + "After colon in new type definition", + CodeStyleSettingsCustomizable.SPACES_OTHER + ) - showCustomOption(KotlinCodeStyleSettings::INSERT_WHITESPACES_IN_SIMPLE_ONE_LINE_METHOD, - "In simple one line methods", - CodeStyleSettingsCustomizable.SPACES_OTHER) + showCustomOption( + KotlinCodeStyleSettings::INSERT_WHITESPACES_IN_SIMPLE_ONE_LINE_METHOD, + "In simple one line methods", + CodeStyleSettingsCustomizable.SPACES_OTHER + ) - showCustomOption(KotlinCodeStyleSettings::SPACE_AROUND_FUNCTION_TYPE_ARROW, - "Around arrow in function types", - CodeStyleSettingsCustomizable.SPACES_OTHER) + showCustomOption( + KotlinCodeStyleSettings::SPACE_AROUND_FUNCTION_TYPE_ARROW, + "Around arrow in function types", + CodeStyleSettingsCustomizable.SPACES_OTHER + ) - showCustomOption(KotlinCodeStyleSettings::SPACE_AROUND_WHEN_ARROW, - "Around arrow in \"when\" clause", - CodeStyleSettingsCustomizable.SPACES_OTHER) + showCustomOption( + KotlinCodeStyleSettings::SPACE_AROUND_WHEN_ARROW, + "Around arrow in \"when\" clause", + CodeStyleSettingsCustomizable.SPACES_OTHER + ) - showCustomOption(KotlinCodeStyleSettings::SPACE_BEFORE_LAMBDA_ARROW, - "Before lambda arrow", - CodeStyleSettingsCustomizable.SPACES_OTHER) + showCustomOption( + KotlinCodeStyleSettings::SPACE_BEFORE_LAMBDA_ARROW, + "Before lambda arrow", + CodeStyleSettingsCustomizable.SPACES_OTHER + ) - showCustomOption(KotlinCodeStyleSettings::SPACE_BEFORE_WHEN_PARENTHESES, - "'when' parentheses", - CodeStyleSettingsCustomizable.SPACES_BEFORE_PARENTHESES) + showCustomOption( + KotlinCodeStyleSettings::SPACE_BEFORE_WHEN_PARENTHESES, + "'when' parentheses", + CodeStyleSettingsCustomizable.SPACES_BEFORE_PARENTHESES + ) } - LanguageCodeStyleSettingsProvider.SettingsType.WRAPPING_AND_BRACES_SETTINGS -> { - consumer.showStandardOptions( - // "ALIGN_MULTILINE_CHAINED_METHODS", - "KEEP_FIRST_COLUMN_COMMENT", - "KEEP_LINE_BREAKS", - "ALIGN_MULTILINE_EXTENDS_LIST", - "ALIGN_MULTILINE_PARAMETERS", - "ALIGN_MULTILINE_PARAMETERS_IN_CALLS", - "ALIGN_MULTILINE_METHOD_BRACKETS", - "ALIGN_MULTILINE_BINARY_OPERATION", - "ELSE_ON_NEW_LINE", - "WHILE_ON_NEW_LINE", - "CATCH_ON_NEW_LINE", - "FINALLY_ON_NEW_LINE", - "CALL_PARAMETERS_WRAP", - "METHOD_PARAMETERS_WRAP", - "EXTENDS_LIST_WRAP", - "METHOD_ANNOTATION_WRAP", - "CLASS_ANNOTATION_WRAP", - "PARAMETER_ANNOTATION_WRAP", - "VARIABLE_ANNOTATION_WRAP", - "FIELD_ANNOTATION_WRAP", - "METHOD_PARAMETERS_LPAREN_ON_NEXT_LINE", - "METHOD_PARAMETERS_RPAREN_ON_NEXT_LINE", - "CALL_PARAMETERS_LPAREN_ON_NEXT_LINE", - "CALL_PARAMETERS_RPAREN_ON_NEXT_LINE", - "ENUM_CONSTANTS_WRAP", - "METHOD_CALL_CHAIN_WRAP", - "WRAP_FIRST_METHOD_IN_CALL_CHAIN", - "ASSIGNMENT_WRAP" + LanguageCodeStyleSettingsProvider.SettingsType.WRAPPING_AND_BRACES_SETTINGS -> { + consumer.showStandardOptions( + // "ALIGN_MULTILINE_CHAINED_METHODS", + "KEEP_FIRST_COLUMN_COMMENT", + "KEEP_LINE_BREAKS", + "ALIGN_MULTILINE_EXTENDS_LIST", + "ALIGN_MULTILINE_PARAMETERS", + "ALIGN_MULTILINE_PARAMETERS_IN_CALLS", + "ALIGN_MULTILINE_METHOD_BRACKETS", + "ALIGN_MULTILINE_BINARY_OPERATION", + "ELSE_ON_NEW_LINE", + "WHILE_ON_NEW_LINE", + "CATCH_ON_NEW_LINE", + "FINALLY_ON_NEW_LINE", + "CALL_PARAMETERS_WRAP", + "METHOD_PARAMETERS_WRAP", + "EXTENDS_LIST_WRAP", + "METHOD_ANNOTATION_WRAP", + "CLASS_ANNOTATION_WRAP", + "PARAMETER_ANNOTATION_WRAP", + "VARIABLE_ANNOTATION_WRAP", + "FIELD_ANNOTATION_WRAP", + "METHOD_PARAMETERS_LPAREN_ON_NEXT_LINE", + "METHOD_PARAMETERS_RPAREN_ON_NEXT_LINE", + "CALL_PARAMETERS_LPAREN_ON_NEXT_LINE", + "CALL_PARAMETERS_RPAREN_ON_NEXT_LINE", + "ENUM_CONSTANTS_WRAP", + "METHOD_CALL_CHAIN_WRAP", + "WRAP_FIRST_METHOD_IN_CALL_CHAIN", + "ASSIGNMENT_WRAP" ) consumer.renameStandardOption(CodeStyleSettingsCustomizable.WRAPPING_SWITCH_STATEMENT, "'when' statements") consumer.renameStandardOption("FIELD_ANNOTATION_WRAP", "Property annotations") - showCustomOption(KotlinCodeStyleSettings::ALIGN_IN_COLUMNS_CASE_BRANCH, - "Align 'when' branches in columns", - CodeStyleSettingsCustomizable.WRAPPING_SWITCH_STATEMENT) - - showCustomOption(KotlinCodeStyleSettings::LBRACE_ON_NEXT_LINE, - "Put left brace on new line", - CodeStyleSettingsCustomizable.WRAPPING_BRACES) + showCustomOption( + KotlinCodeStyleSettings::ALIGN_IN_COLUMNS_CASE_BRANCH, + "Align 'when' branches in columns", + CodeStyleSettingsCustomizable.WRAPPING_SWITCH_STATEMENT + ) showCustomOption( - KotlinCodeStyleSettings::CONTINUATION_INDENT_IN_PARAMETER_LISTS, - "Use continuation indent", - CodeStyleSettingsCustomizable.WRAPPING_METHOD_PARAMETERS) - showCustomOption( - KotlinCodeStyleSettings::CONTINUATION_INDENT_IN_ARGUMENT_LISTS, - "Use continuation indent", - CodeStyleSettingsCustomizable.WRAPPING_METHOD_ARGUMENTS_WRAPPING) - showCustomOption( - KotlinCodeStyleSettings::CONTINUATION_INDENT_FOR_CHAINED_CALLS, - "Use continuation indent", - CodeStyleSettingsCustomizable.WRAPPING_CALL_CHAIN) - showCustomOption( - KotlinCodeStyleSettings::CONTINUATION_INDENT_IN_SUPERTYPE_LISTS, - "Use continuation indent", - CodeStyleSettingsCustomizable.WRAPPING_EXTENDS_LIST) + KotlinCodeStyleSettings::LBRACE_ON_NEXT_LINE, + "Put left brace on new line", + CodeStyleSettingsCustomizable.WRAPPING_BRACES + ) showCustomOption( - KotlinCodeStyleSettings::WRAP_EXPRESSION_BODY_FUNCTIONS, - "Expression body functions", - options = *arrayOf(CodeStyleSettingsCustomizable.WRAP_OPTIONS_FOR_SINGLETON, CodeStyleSettingsCustomizable.WRAP_VALUES_FOR_SINGLETON) + KotlinCodeStyleSettings::CONTINUATION_INDENT_IN_PARAMETER_LISTS, + "Use continuation indent", + CodeStyleSettingsCustomizable.WRAPPING_METHOD_PARAMETERS ) showCustomOption( - KotlinCodeStyleSettings::CONTINUATION_INDENT_FOR_EXPRESSION_BODIES, - "Use continuation indent", - "Expression body functions" + KotlinCodeStyleSettings::CONTINUATION_INDENT_IN_ARGUMENT_LISTS, + "Use continuation indent", + CodeStyleSettingsCustomizable.WRAPPING_METHOD_ARGUMENTS_WRAPPING ) showCustomOption( - KotlinCodeStyleSettings::WRAP_ELVIS_EXPRESSIONS, - "Elvis expressions", - options = *arrayOf(CodeStyleSettingsCustomizable.WRAP_OPTIONS_FOR_SINGLETON, CodeStyleSettingsCustomizable.WRAP_VALUES_FOR_SINGLETON) + KotlinCodeStyleSettings::CONTINUATION_INDENT_FOR_CHAINED_CALLS, + "Use continuation indent", + CodeStyleSettingsCustomizable.WRAPPING_CALL_CHAIN + ) + showCustomOption( + KotlinCodeStyleSettings::CONTINUATION_INDENT_IN_SUPERTYPE_LISTS, + "Use continuation indent", + CodeStyleSettingsCustomizable.WRAPPING_EXTENDS_LIST + ) + + showCustomOption( + KotlinCodeStyleSettings::WRAP_EXPRESSION_BODY_FUNCTIONS, + "Expression body functions", + options = *arrayOf( + CodeStyleSettingsCustomizable.WRAP_OPTIONS_FOR_SINGLETON, + CodeStyleSettingsCustomizable.WRAP_VALUES_FOR_SINGLETON + ) + ) + showCustomOption( + KotlinCodeStyleSettings::CONTINUATION_INDENT_FOR_EXPRESSION_BODIES, + "Use continuation indent", + "Expression body functions" + ) + showCustomOption( + KotlinCodeStyleSettings::WRAP_ELVIS_EXPRESSIONS, + "Elvis expressions", + options = *arrayOf( + CodeStyleSettingsCustomizable.WRAP_OPTIONS_FOR_SINGLETON, + CodeStyleSettingsCustomizable.WRAP_VALUES_FOR_SINGLETON + ) ) @Suppress("InvalidBundleOrProperty") showCustomOption( - KotlinCodeStyleSettings::IF_RPAREN_ON_NEW_LINE, - ApplicationBundle.message("wrapping.rpar.on.new.line"), - CodeStyleSettingsCustomizable.WRAPPING_IF_STATEMENT + KotlinCodeStyleSettings::IF_RPAREN_ON_NEW_LINE, + ApplicationBundle.message("wrapping.rpar.on.new.line"), + CodeStyleSettingsCustomizable.WRAPPING_IF_STATEMENT ) showCustomOption( - KotlinCodeStyleSettings::CONTINUATION_INDENT_IN_IF_CONDITIONS, - "Use continuation indent in conditions", - CodeStyleSettingsCustomizable.WRAPPING_IF_STATEMENT + KotlinCodeStyleSettings::CONTINUATION_INDENT_IN_IF_CONDITIONS, + "Use continuation indent in conditions", + CodeStyleSettingsCustomizable.WRAPPING_IF_STATEMENT ) } LanguageCodeStyleSettingsProvider.SettingsType.BLANK_LINES_SETTINGS -> { consumer.showStandardOptions( - "KEEP_BLANK_LINES_IN_CODE", - "KEEP_BLANK_LINES_IN_DECLARATIONS", - "KEEP_BLANK_LINES_BEFORE_RBRACE", - "BLANK_LINES_AFTER_CLASS_HEADER" + "KEEP_BLANK_LINES_IN_CODE", + "KEEP_BLANK_LINES_IN_DECLARATIONS", + "KEEP_BLANK_LINES_BEFORE_RBRACE", + "BLANK_LINES_AFTER_CLASS_HEADER" + ) + showCustomOption( + KotlinCodeStyleSettings::BLANK_LINES_AROUND_BLOCK_WHEN_BRANCHES, + "Around 'when' branches with {}", + CodeStyleSettingsCustomizable.BLANK_LINES ) - showCustomOption(KotlinCodeStyleSettings::BLANK_LINES_AROUND_BLOCK_WHEN_BRANCHES, - "Around 'when' branches with {}", - CodeStyleSettingsCustomizable.BLANK_LINES) } else -> consumer.showStandardOptions() } @@ -345,8 +381,9 @@ class KotlinLanguageCodeStyleSettingsProvider : LanguageCodeStyleSettingsProvide override fun getIndentOptionsEditor(): IndentOptionsEditor = SmartIndentOptionsEditor() - override fun getDefaultCommonSettings(): CommonCodeStyleSettings = - CommonCodeStyleSettings(language).apply { + override fun getDefaultCommonSettings(): CommonCodeStyleSettings { + return KotlinCommonCodeStyleSettings().apply { initIndentOptions() } -} + } +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/test/SettingsConfigurator.java b/idea/tests/org/jetbrains/kotlin/test/SettingsConfigurator.java index 1bf307c50e2..3dea19c04d5 100644 --- a/idea/tests/org/jetbrains/kotlin/test/SettingsConfigurator.java +++ b/idea/tests/org/jetbrains/kotlin/test/SettingsConfigurator.java @@ -103,7 +103,7 @@ public class SettingsConfigurator { private static boolean setSettingWithField(String settingName, Object object, Object value) { try { - Field field = object.getClass().getDeclaredField(settingName); + Field field = object.getClass().getField(settingName); field.set(object, value); return true; }