Commit 47bedfb4 authored by Daniil Ovchinnikov's avatar Daniil Ovchinnikov
Browse files

[jvm-lang] java: return if no method is found after reformat IDEA-188113

parent 3fcd22a5
Showing with 38 additions and 16 deletions
+38 -16
...@@ -31,10 +31,10 @@ internal class CreateGetterWithFieldAction(target: PsiClass, request: CreateMeth ...@@ -31,10 +31,10 @@ internal class CreateGetterWithFieldAction(target: PsiClass, request: CreateMeth
override fun createRenderer(project: Project) = object : PropertyRenderer(project, target, request, propertyInfo) { override fun createRenderer(project: Project) = object : PropertyRenderer(project, target, request, propertyInfo) {
override fun fillTemplate(builder: TemplateBuilderImpl): RangeExpression { override fun fillTemplate(builder: TemplateBuilderImpl): RangeExpression? {
val prototypeField = generatePrototypeField() val prototypeField = generatePrototypeField()
val prototype = generateSimpleGetterPrototype(prototypeField) val prototype = generateSimpleGetterPrototype(prototypeField)
val accessor = insertAccessor(prototype) val accessor = insertAccessor(prototype) ?: return null
val data = accessor.extractGetterTemplateData() val data = accessor.extractGetterTemplateData()
return builder.setupInput(data) return builder.setupInput(data)
} }
......
...@@ -52,19 +52,19 @@ internal class CreatePropertyAction(target: PsiClass, request: CreateMethodReque ...@@ -52,19 +52,19 @@ internal class CreatePropertyAction(target: PsiClass, request: CreateMethodReque
return getter to setter return getter to setter
} }
private fun insertPrototypes(): Pair<PsiMethod, PsiMethod> { private fun insertPrototypes(): Pair<PsiMethod, PsiMethod>? {
val (getterPrototype, setterPrototype) = generatePrototypes() val (getterPrototype, setterPrototype) = generatePrototypes()
return if (propertyKind == SETTER) { return if (propertyKind == SETTER) {
// Technology isn't there yet. See related: WEB-26575. // Technology isn't there yet. See related: WEB-26575.
// We can't recalculate template segments which start before the current segment, // We can't recalculate template segments which start before the current segment,
// so we add the setter before the getter. // so we add the setter before the getter.
val setter = insertAccessor(setterPrototype) val setter = insertAccessor(setterPrototype) ?: return null
val getter = insertAccessor(getterPrototype) val getter = insertAccessor(getterPrototype) ?: return null
getter to setter getter to setter
} }
else { else {
val getter = insertAccessor(getterPrototype) val getter = insertAccessor(getterPrototype) ?: return null
val setter = insertAccessor(setterPrototype) val setter = insertAccessor(setterPrototype) ?: return null
getter to setter getter to setter
} }
} }
...@@ -83,8 +83,8 @@ internal class CreatePropertyAction(target: PsiClass, request: CreateMethodReque ...@@ -83,8 +83,8 @@ internal class CreatePropertyAction(target: PsiClass, request: CreateMethodReque
* *
* 3. Setter parameter name template is added in any case. * 3. Setter parameter name template is added in any case.
*/ */
override fun fillTemplate(builder: TemplateBuilderImpl): RangeExpression { override fun fillTemplate(builder: TemplateBuilderImpl): RangeExpression? {
val (getter, setter) = insertPrototypes() val (getter, setter) = insertPrototypes() ?: return null
val getterData = getter.extractGetterTemplateData() val getterData = getter.extractGetterTemplateData()
val setterData = setter.extractSetterTemplateData() val setterData = setter.extractSetterTemplateData()
......
...@@ -31,10 +31,10 @@ internal class CreateSetterWithFieldAction(target: PsiClass, request: CreateMeth ...@@ -31,10 +31,10 @@ internal class CreateSetterWithFieldAction(target: PsiClass, request: CreateMeth
override fun createRenderer(project: Project) = object : PropertyRenderer(project, target, request, propertyInfo) { override fun createRenderer(project: Project) = object : PropertyRenderer(project, target, request, propertyInfo) {
override fun fillTemplate(builder: TemplateBuilderImpl): RangeExpression { override fun fillTemplate(builder: TemplateBuilderImpl): RangeExpression? {
val prototypeField = generatePrototypeField() val prototypeField = generatePrototypeField()
val prototype = generateSimpleSetterPrototype(prototypeField, target) val prototype = generateSimpleSetterPrototype(prototypeField, target)
val accessor = insertAccessor(prototype) val accessor = insertAccessor(prototype) ?: return null
val data = accessor.extractSetterTemplateData() val data = accessor.extractSetterTemplateData()
val typeExpression = builder.setupInput(data) val typeExpression = builder.setupInput(data)
builder.setupSetterParameter(data) builder.setupSetterParameter(data)
......
...@@ -27,7 +27,7 @@ internal abstract class PropertyRenderer( ...@@ -27,7 +27,7 @@ internal abstract class PropertyRenderer(
nameKind: Pair<String, PropertyKind> nameKind: Pair<String, PropertyKind>
) { ) {
protected val factory = JavaPsiFacade.getInstance(project).elementFactory private val factory = JavaPsiFacade.getInstance(project).elementFactory
private val codeStyleManager = JavaCodeStyleManager.getInstance(project)!! private val codeStyleManager = JavaCodeStyleManager.getInstance(project)!!
private val javaUsage = request as? CreateMethodFromJavaUsageRequest private val javaUsage = request as? CreateMethodFromJavaUsageRequest
private val isStatic = JvmModifier.STATIC in request.modifiers private val isStatic = JvmModifier.STATIC in request.modifiers
...@@ -64,7 +64,7 @@ internal abstract class PropertyRenderer( ...@@ -64,7 +64,7 @@ internal abstract class PropertyRenderer(
if (!navigate()) return if (!navigate()) return
val builder = TemplateBuilderImpl(target) val builder = TemplateBuilderImpl(target)
builder.setGreedyToRight(true) builder.setGreedyToRight(true)
val typeExpression = fillTemplate(builder) val typeExpression = fillTemplate(builder) ?: return
val template = builder.buildInlineTemplate().apply { val template = builder.buildInlineTemplate().apply {
isToShortenLongNames = true isToShortenLongNames = true
} }
...@@ -72,10 +72,11 @@ internal abstract class PropertyRenderer( ...@@ -72,10 +72,11 @@ internal abstract class PropertyRenderer(
TemplateManager.getInstance(project).startTemplate(targetEditor, template, listener) TemplateManager.getInstance(project).startTemplate(targetEditor, template, listener)
} }
protected abstract fun fillTemplate(builder: TemplateBuilderImpl): RangeExpression protected abstract fun fillTemplate(builder: TemplateBuilderImpl): RangeExpression?
protected fun insertAccessor(prototype: PsiMethod): PsiMethod { protected fun insertAccessor(prototype: PsiMethod): PsiMethod? {
return forcePsiPostprocessAndRestoreElement(target.add(prototype)) as PsiMethod val method = target.add(prototype) as PsiMethod
return forcePsiPostprocessAndRestoreElement(method)
} }
private fun TemplateBuilderImpl.createTemplateContext(): TemplateContext { private fun TemplateBuilderImpl.createTemplateContext(): TemplateContext {
......
// "Create property 'appOutputPath' in 'X'" "true"
class X {
void initOutputChecker() {
getAppOutputPath();
}
protected RunContentDescriptor executeConfiguration() {
ApplicationManager.getApplication().invokeLater(() -> {
public void getAppOutputPath() {
return appOutputPath;
}
\ No newline at end of file
// "Create property 'appOutputPath' in 'X'" "true"
class X {
void initOutputChecker() {
getAppOutpu<caret>tPath();
}
protected RunContentDescriptor executeConfiguration() {
ApplicationManager.getApplication().invokeLater(() -> {
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment