Repository navigation
Expand file tree
/
Copy pathStateRefinementErrorDTO.java
More file actions
39 lines (33 loc) · 1.67 KB
/
Copy pathStateRefinementErrorDTO.java
File metadata and controls
39 lines (33 loc) · 1.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package dtos.errors;
import java.io.File;
import dtos.diagnostics.SourcePositionDTO;
import dtos.diagnostics.VCSimplificationResultDTO;
import dtos.fsm.StateMachineDTO;
import liquidjava.diagnostics.errors.StateErrorContext;
import liquidjava.diagnostics.errors.StateRefinementError;
import liquidjava.fsm.StateMachineParser;
import liquidjava.rj_language.ast.formatter.ExpressionFormatter;
/**
* DTO for serializing StateRefinementError instances to JSON
*/
public class StateRefinementErrorDTO extends LJErrorDTO {
public final String expected;
public final VCSimplificationResultDTO found;
public final String customMessage;
public final SourcePositionDTO declarationPosition;
public final StateMachineDTO stateMachine;
public StateRefinementErrorDTO(StateRefinementError error) {
super("state-refinement-error", error);
this.expected = error.getExpected() == null ? null : ExpressionFormatter.format(error.getExpected());
this.found = VCSimplificationResultDTO.from(error.getFoundSimplification());
this.customMessage = error.getCustomMessage();
this.declarationPosition = SourcePositionDTO.from(error.getDeclarationPosition());
StateErrorContext context = error.getContext();
this.stateMachine = declarationPosition == null || declarationPosition.file() == null ? null
: StateMachineDTO.from(StateMachineParser.parse(new File(declarationPosition.file()).toURI().toString(),
context == null ? null : context.receiverClass()), context);
}
public static StateRefinementErrorDTO from(StateRefinementError error) {
return new StateRefinementErrorDTO(error);
}
}