-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathStateRefinementErrorDTO.java
More file actions
36 lines (30 loc) · 1.44 KB
/
Copy pathStateRefinementErrorDTO.java
File metadata and controls
36 lines (30 loc) · 1.44 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
package dtos.errors;
import java.io.File;
import dtos.diagnostics.SourcePositionDTO;
import dtos.diagnostics.VCSimplificationResultDTO;
import fsm.StateMachine;
import fsm.StateMachineParser;
import liquidjava.diagnostics.errors.StateRefinementError;
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 StateMachine 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());
this.stateMachine = declarationPosition == null || declarationPosition.file() == null ? null
: StateMachineParser.parse(new File(declarationPosition.file()).toURI().toString());
}
public static StateRefinementErrorDTO from(StateRefinementError error) {
return new StateRefinementErrorDTO(error);
}
}