|
22 | 22 | import org.eclipse.jdt.core.IJavaElement; |
23 | 23 | import org.eclipse.jdt.core.IType; |
24 | 24 | import org.eclipse.jdt.core.JavaModelException; |
| 25 | +import org.eclipse.jdt.core.dom.ASTNode; |
25 | 26 | import org.eclipse.jdt.core.dom.CompilationUnit; |
26 | 27 | import org.eclipse.jdt.core.dom.IMethodBinding; |
27 | 28 | import org.eclipse.jdt.core.dom.ITypeBinding; |
28 | 29 | import org.eclipse.jdt.core.dom.IVariableBinding; |
| 30 | +import org.eclipse.jdt.core.dom.NodeFinder; |
| 31 | +import org.eclipse.jdt.core.dom.TypeDeclaration; |
29 | 32 | import org.eclipse.jdt.core.manipulation.CoreASTProvider; |
30 | 33 | import org.eclipse.jdt.internal.corext.codemanipulation.CodeGenerationSettings; |
31 | 34 | import org.eclipse.jdt.internal.corext.codemanipulation.GenerateHashCodeEqualsOperation; |
32 | 35 | import org.eclipse.jdt.internal.corext.dom.ASTNodes; |
33 | 36 | import org.eclipse.jdt.ls.core.internal.JavaLanguageServerPlugin; |
| 37 | +import org.eclipse.jdt.ls.core.internal.corrections.DiagnosticsHelper; |
34 | 38 | import org.eclipse.jdt.ls.core.internal.handlers.JdtDomModels.LspVariableBinding; |
35 | 39 | import org.eclipse.jdt.ls.core.internal.preferences.Preferences; |
36 | 40 | import org.eclipse.jdt.ls.core.internal.text.correction.SourceAssistProcessor; |
@@ -113,8 +117,10 @@ public static TextEdit generateHashCodeEqualsTextEdit(IType type, LspVariableBin |
113 | 117 | CodeGenerationSettings codeGenSettings = new CodeGenerationSettings(); |
114 | 118 | codeGenSettings.createComments = generateComments; |
115 | 119 | codeGenSettings.overrideAnnotation = true; |
| 120 | + ASTNode node = NodeFinder.perform(astRoot, DiagnosticsHelper.getStartOffset(type.getCompilationUnit(), cursor), DiagnosticsHelper.getLength(type.getCompilationUnit(), cursor)); |
| 121 | + ASTNode declarationNode = SourceAssistProcessor.getDeclarationNode(node); |
116 | 122 | // If cursor position is not specified, then insert to the last by default. |
117 | | - IJavaElement insertPosition = CodeGenerationUtils.findInsertElement(type, cursor); |
| 123 | + IJavaElement insertPosition = (declarationNode instanceof TypeDeclaration) ? CodeGenerationUtils.findInsertElement(type, null) : CodeGenerationUtils.findInsertElement(type, cursor); |
118 | 124 | GenerateHashCodeEqualsOperation operation = new GenerateHashCodeEqualsOperation(typeBinding, variableBindings, astRoot, insertPosition, codeGenSettings, useInstanceof, useJava7Objects, regenerate, false, false); |
119 | 125 | operation.setUseBlocksForThen(useBlocks); |
120 | 126 | operation.run(null); |
|
0 commit comments