Skip to content

Commit 91a823a

Browse files
committed
Инлайн Range внутрь частотных символов
1 parent e8ab801 commit 91a823a

File tree

4 files changed

+157
-8
lines changed

4 files changed

+157
-8
lines changed

src/main/java/com/github/_1c_syntax/bsl/languageserver/context/symbol/MethodSymbol.java

Lines changed: 59 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
import com.github._1c_syntax.bsl.languageserver.context.symbol.annotations.Annotation;
2626
import com.github._1c_syntax.bsl.languageserver.context.symbol.annotations.CompilerDirectiveKind;
2727
import com.github._1c_syntax.bsl.languageserver.context.symbol.description.MethodDescription;
28+
import com.github._1c_syntax.bsl.languageserver.utils.Ranges;
29+
import lombok.AccessLevel;
2830
import lombok.Builder;
2931
import lombok.EqualsAndHashCode;
3032
import lombok.Getter;
@@ -52,9 +54,24 @@ public class MethodSymbol implements SourceDefinedSymbol, Exportable, Describabl
5254

5355
@EqualsAndHashCode.Include
5456
DocumentContext owner;
55-
Range range;
56-
@EqualsAndHashCode.Include
57-
Range subNameRange;
57+
58+
@Getter(AccessLevel.NONE)
59+
int startLine;
60+
@Getter(AccessLevel.NONE)
61+
int startCharacter;
62+
@Getter(AccessLevel.NONE)
63+
int endLine;
64+
@Getter(AccessLevel.NONE)
65+
int endCharacter;
66+
67+
@Getter(AccessLevel.NONE)
68+
int subNameStartLine;
69+
@Getter(AccessLevel.NONE)
70+
int subNameStartCharacter;
71+
@Getter(AccessLevel.NONE)
72+
int subNameEndLine;
73+
@Getter(AccessLevel.NONE)
74+
int subNameEndCharacter;
5875

5976
@Getter
6077
@Setter
@@ -79,6 +96,16 @@ public class MethodSymbol implements SourceDefinedSymbol, Exportable, Describabl
7996
@Builder.Default
8097
List<Annotation> annotations = new ArrayList<>();
8198

99+
@Override
100+
public Range getRange() {
101+
return Ranges.create(startLine, startCharacter, endLine, endCharacter);
102+
}
103+
104+
@EqualsAndHashCode.Include
105+
public Range getSubNameRange() {
106+
return Ranges.create(subNameStartLine, subNameStartCharacter, subNameEndLine, subNameEndCharacter);
107+
}
108+
82109
public Optional<RegionSymbol> getRegion() {
83110
return getParent()
84111
.filter(RegionSymbol.class::isInstance)
@@ -94,4 +121,33 @@ public void accept(SymbolTreeVisitor visitor) {
94121
public Range getSelectionRange() {
95122
return getSubNameRange();
96123
}
124+
125+
public static MethodSymbolBuilder builder() {
126+
return new MethodSymbolBuilder();
127+
}
128+
129+
public static class MethodSymbolBuilder {
130+
131+
public MethodSymbolBuilder range(Range range) {
132+
var start = range.getStart();
133+
var end = range.getEnd();
134+
startLine = start.getLine();
135+
startCharacter = start.getCharacter();
136+
endLine = end.getLine();
137+
endCharacter = end.getCharacter();
138+
139+
return this;
140+
}
141+
142+
public MethodSymbolBuilder subNameRange(Range range) {
143+
var start = range.getStart();
144+
var end = range.getEnd();
145+
subNameStartLine = start.getLine();
146+
subNameStartCharacter = start.getCharacter();
147+
subNameEndLine = end.getLine();
148+
subNameEndCharacter = end.getCharacter();
149+
150+
return this;
151+
}
152+
}
97153
}

src/main/java/com/github/_1c_syntax/bsl/languageserver/context/symbol/ParameterDefinition.java

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,10 @@
2222
package com.github._1c_syntax.bsl.languageserver.context.symbol;
2323

2424
import com.github._1c_syntax.bsl.languageserver.context.symbol.description.ParameterDescription;
25+
import com.github._1c_syntax.bsl.languageserver.utils.Ranges;
26+
import lombok.AccessLevel;
2527
import lombok.Builder;
28+
import lombok.Getter;
2629
import lombok.Value;
2730
import org.eclipse.lsp4j.Range;
2831

@@ -55,15 +58,30 @@ public class ParameterDefinition {
5558
*/
5659
DefaultValue defaultValue;
5760

61+
@Getter(AccessLevel.NONE)
62+
int startLine;
63+
@Getter(AccessLevel.NONE)
64+
int startCharacter;
65+
@Getter(AccessLevel.NONE)
66+
int endLine;
67+
@Getter(AccessLevel.NONE)
68+
int endCharacter;
69+
5870
/**
5971
* Место объявления параметра.
6072
*/
61-
Range range;
73+
public Range getRange() {
74+
return Ranges.create(startLine, startCharacter, endLine, endCharacter);
75+
}
6276

6377
public boolean isOptional() {
6478
return !DefaultValue.EMPTY.equals(defaultValue);
6579
}
6680

81+
public static ParameterDefinitionBuilder builder() {
82+
return new ParameterDefinitionBuilder();
83+
}
84+
6785
public enum ParameterType {
6886
DATETIME,
6987
BOOLEAN,
@@ -81,4 +99,18 @@ public static class DefaultValue {
8199
ParameterType type;
82100
String value;
83101
}
102+
103+
public static class ParameterDefinitionBuilder {
104+
105+
public ParameterDefinitionBuilder range(Range range) {
106+
var start = range.getStart();
107+
var end = range.getEnd();
108+
startLine = start.getLine();
109+
startCharacter = start.getCharacter();
110+
endLine = end.getLine();
111+
endCharacter = end.getCharacter();
112+
113+
return this;
114+
}
115+
}
84116
}

src/main/java/com/github/_1c_syntax/bsl/languageserver/context/symbol/VariableSymbol.java

Lines changed: 63 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
import com.github._1c_syntax.bsl.languageserver.context.DocumentContext;
2525
import com.github._1c_syntax.bsl.languageserver.context.symbol.variable.VariableDescription;
2626
import com.github._1c_syntax.bsl.languageserver.context.symbol.variable.VariableKind;
27+
import com.github._1c_syntax.bsl.languageserver.utils.Ranges;
28+
import lombok.AccessLevel;
2729
import lombok.Builder;
2830
import lombok.EqualsAndHashCode;
2931
import lombok.Getter;
@@ -67,10 +69,23 @@ public class VariableSymbol implements SourceDefinedSymbol, Exportable, Describa
6769
@EqualsAndHashCode.Include
6870
DocumentContext owner;
6971

70-
Range range;
71-
72-
@EqualsAndHashCode.Include
73-
Range variableNameRange;
72+
@Getter(AccessLevel.NONE)
73+
int startLine;
74+
@Getter(AccessLevel.NONE)
75+
int startCharacter;
76+
@Getter(AccessLevel.NONE)
77+
int endLine;
78+
@Getter(AccessLevel.NONE)
79+
int endCharacter;
80+
81+
@Getter(AccessLevel.NONE)
82+
int variableNameStartLine;
83+
@Getter(AccessLevel.NONE)
84+
int variableNameStartCharacter;
85+
@Getter(AccessLevel.NONE)
86+
int variableNameEndLine;
87+
@Getter(AccessLevel.NONE)
88+
int variableNameEndCharacter;
7489

7590
@Getter
7691
@Setter
@@ -96,6 +111,21 @@ public class VariableSymbol implements SourceDefinedSymbol, Exportable, Describa
96111
*/
97112
Optional<VariableDescription> description;
98113

114+
@Override
115+
public Range getRange() {
116+
return Ranges.create(startLine, startCharacter, endLine, endCharacter);
117+
}
118+
119+
@EqualsAndHashCode.Include
120+
public Range getVariableNameRange() {
121+
return Ranges.create(
122+
variableNameStartLine,
123+
variableNameStartCharacter,
124+
variableNameEndLine,
125+
variableNameEndCharacter
126+
);
127+
}
128+
99129
@Override
100130
public void accept(SymbolTreeVisitor visitor) {
101131
visitor.visitVariable(this);
@@ -106,4 +136,33 @@ public Range getSelectionRange() {
106136
return getVariableNameRange();
107137
}
108138

139+
public static VariableSymbolBuilder builder() {
140+
return new VariableSymbolBuilder();
141+
}
142+
143+
public static class VariableSymbolBuilder {
144+
145+
public VariableSymbolBuilder range(Range range) {
146+
var start = range.getStart();
147+
var end = range.getEnd();
148+
startLine = start.getLine();
149+
startCharacter = start.getCharacter();
150+
endLine = end.getLine();
151+
endCharacter = end.getCharacter();
152+
153+
return this;
154+
}
155+
156+
public VariableSymbolBuilder variableNameRange(Range range) {
157+
var start = range.getStart();
158+
var end = range.getEnd();
159+
variableNameStartLine = start.getLine();
160+
variableNameStartCharacter = start.getCharacter();
161+
variableNameEndLine = end.getLine();
162+
variableNameEndCharacter = end.getCharacter();
163+
164+
return this;
165+
}
166+
}
167+
109168
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
package com.github._1c_syntax.bsl.languageserver.references;public class GenericInterner {
2+
}

0 commit comments

Comments
 (0)