Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions client/src/types/diagnostics.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ export type LJWarning = CustomWarning | ExternalClassNotFoundWarning | ExternalM
type BaseDiagnostic = {
title: string;
message: string;
details: string;
file: string;
position: SourcePosition | null;
}
Expand Down
29 changes: 26 additions & 3 deletions server/src/main/java/dtos/diagnostics/LJDiagnosticDTO.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,33 @@
/**
* DTO for serializing LJDiagnostic instances to JSON
*/
public record LJDiagnosticDTO(String title, String message, String details, String file, SourcePositionDTO position) {
public class LJDiagnosticDTO {

public static LJDiagnosticDTO from(LJDiagnostic diagnostic) {
return new LJDiagnosticDTO(diagnostic.getTitle(), diagnostic.getMessage(), diagnostic.getDetails(),
public final String category;
public final String type;
public final String title;
public final String message;
public final String details;
public final String file;
public final SourcePositionDTO position;

public LJDiagnosticDTO(String category, String type, LJDiagnostic diagnostic) {
this(category, type, diagnostic.getTitle(), diagnostic.getMessage(), diagnostic.getDetails(),
diagnostic.getFile(), SourcePositionDTO.from(diagnostic.getPosition()));
}

public LJDiagnosticDTO(String category, String type, String title, String message, String details, String file,
SourcePositionDTO position) {
this.category = category;
this.type = type;
this.title = title;
this.message = message;
this.details = details;
this.file = file;
this.position = position;
}

public static LJDiagnosticDTO from(LJDiagnostic diagnostic) {
return new LJDiagnosticDTO(null, null, diagnostic);
}
}
11 changes: 6 additions & 5 deletions server/src/main/java/dtos/errors/ArgumentMismatchErrorDTO.java
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
package dtos.errors;

import dtos.diagnostics.SourcePositionDTO;
import liquidjava.diagnostics.errors.ArgumentMismatchError;

/**
* DTO for serializing ArgumentMismatchErrorDTO instances to JSON
*/
public record ArgumentMismatchErrorDTO(String category, String type, String title, String message, String file,
SourcePositionDTO position) {
public class ArgumentMismatchErrorDTO extends LJErrorDTO {

public ArgumentMismatchErrorDTO(ArgumentMismatchError error) {
super("argument-mismatch-error", error);
}

public static ArgumentMismatchErrorDTO from(ArgumentMismatchError error) {
return new ArgumentMismatchErrorDTO("error", "argument-mismatch-error", error.getTitle(), error.getMessage(), error.getFile(),
SourcePositionDTO.from(error.getPosition()));
return new ArgumentMismatchErrorDTO(error);
}
}
10 changes: 6 additions & 4 deletions server/src/main/java/dtos/errors/CustomErrorDTO.java
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
package dtos.errors;

import dtos.diagnostics.SourcePositionDTO;
import liquidjava.diagnostics.errors.CustomError;

/**
* DTO for serializing CustomError instances to JSON
*/
public record CustomErrorDTO(String category, String type, String title, String message, String file, SourcePositionDTO position) {
public class CustomErrorDTO extends LJErrorDTO {

public CustomErrorDTO(CustomError error) {
super("custom-error", error);
}

public static CustomErrorDTO from(CustomError error) {
return new CustomErrorDTO("error", "custom-error", error.getTitle(), error.getMessage(), error.getFile(),
SourcePositionDTO.from(error.getPosition()));
return new CustomErrorDTO(error);
}
}
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
package dtos.errors;

import dtos.diagnostics.SourcePositionDTO;
import liquidjava.diagnostics.errors.IllegalConstructorTransitionError;

/**
* DTO for serializing IllegalConstructorTransitionError instances to JSON
*/
public record IllegalConstructorTransitionErrorDTO(String category, String type, String title, String message, String file,
SourcePositionDTO position) {
public class IllegalConstructorTransitionErrorDTO extends LJErrorDTO {

public IllegalConstructorTransitionErrorDTO(IllegalConstructorTransitionError error) {
super("illegal-constructor-transition-error", error);
}

public static IllegalConstructorTransitionErrorDTO from(IllegalConstructorTransitionError error) {
return new IllegalConstructorTransitionErrorDTO("error", "illegal-constructor-transition-error", error.getTitle(), error.getMessage(), error.getFile(),
SourcePositionDTO.from(error.getPosition()));
return new IllegalConstructorTransitionErrorDTO(error);
}
}
14 changes: 9 additions & 5 deletions server/src/main/java/dtos/errors/InvalidRefinementErrorDTO.java
Original file line number Diff line number Diff line change
@@ -1,16 +1,20 @@
package dtos.errors;

import dtos.diagnostics.SourcePositionDTO;
import liquidjava.diagnostics.errors.InvalidRefinementError;

/**
* DTO for serializing InvalidRefinementError instances to JSON
*/
public record InvalidRefinementErrorDTO(String category, String type, String title, String message, String file,
SourcePositionDTO position, String refinement) {
public class InvalidRefinementErrorDTO extends LJErrorDTO {

public final String refinement;

public InvalidRefinementErrorDTO(InvalidRefinementError error) {
super("invalid-refinement-error", error);
this.refinement = error.getRefinement();
}

public static InvalidRefinementErrorDTO from(InvalidRefinementError error) {
return new InvalidRefinementErrorDTO("error", "invalid-refinement-error", error.getTitle(), error.getMessage(), error.getFile(),
SourcePositionDTO.from(error.getPosition()), error.getRefinement());
return new InvalidRefinementErrorDTO(error);
}
}
25 changes: 21 additions & 4 deletions server/src/main/java/dtos/errors/LJErrorDTO.java
Original file line number Diff line number Diff line change
@@ -1,17 +1,34 @@
package dtos.errors;

import dtos.diagnostics.LJDiagnosticDTO;
import dtos.diagnostics.SourcePositionDTO;
import dtos.diagnostics.TranslationTableDTO;
import liquidjava.diagnostics.errors.LJError;

/**
* DTO for serializing LJError instances to JSON
*/
public record LJErrorDTO(String title, String message, String file, SourcePositionDTO position,
TranslationTableDTO translationTable) {
public class LJErrorDTO extends LJDiagnosticDTO {

public final TranslationTableDTO translationTable;

public LJErrorDTO(String type, LJError error) {
super("error", type, error);
this.translationTable = TranslationTableDTO.from(error.getTranslationTable());
}

protected LJErrorDTO(String category, String type, LJError error) {
super(category, type, error);
this.translationTable = TranslationTableDTO.from(error.getTranslationTable());
}

public LJErrorDTO(String category, String type, String title, String message, String details, String file,
SourcePositionDTO position, TranslationTableDTO translationTable) {
super(category, type, title, message, details, file, position);
this.translationTable = translationTable;
}

public static LJErrorDTO from(LJError error) {
return new LJErrorDTO(error.getTitle(), error.getMessage(), error.getFile(),
SourcePositionDTO.from(error.getPosition()), TranslationTableDTO.from(error.getTranslationTable()));
return new LJErrorDTO(null, error);
}
}
17 changes: 11 additions & 6 deletions server/src/main/java/dtos/errors/NotFoundErrorDTO.java
Original file line number Diff line number Diff line change
@@ -1,17 +1,22 @@
package dtos.errors;

import dtos.diagnostics.SourcePositionDTO;
import dtos.diagnostics.TranslationTableDTO;
import liquidjava.diagnostics.errors.NotFoundError;

/**
* DTO for serializing NotFoundError instances to JSON
*/
public record NotFoundErrorDTO(String category, String type, String title, String message, String file, SourcePositionDTO position,
TranslationTableDTO translationTable, String name, String kind) {
public class NotFoundErrorDTO extends LJErrorDTO {

public final String name;
public final String kind;

public NotFoundErrorDTO(NotFoundError error) {
super("not-found-error", error);
this.name = error.getName();
this.kind = error.getKind();
}

public static NotFoundErrorDTO from(NotFoundError error) {
return new NotFoundErrorDTO("error", "not-found-error", error.getTitle(), error.getMessage(), error.getFile(),
SourcePositionDTO.from(error.getPosition()), TranslationTableDTO.from(error.getTranslationTable()), error.getName(), error.getKind());
return new NotFoundErrorDTO(error);
}
}
21 changes: 15 additions & 6 deletions server/src/main/java/dtos/errors/RefinementErrorDTO.java
Original file line number Diff line number Diff line change
@@ -1,18 +1,27 @@
package dtos.errors;

import dtos.diagnostics.SourcePositionDTO;
import dtos.diagnostics.TranslationTableDTO;
import liquidjava.diagnostics.errors.RefinementError;
import liquidjava.rj_language.opt.derivation_node.ValDerivationNode;

/**
* DTO for serializing RefinementError instances to JSON
*/
public record RefinementErrorDTO(String category, String type, String title, String message, String file, SourcePositionDTO position,
TranslationTableDTO translationTable, ValDerivationNode expected, ValDerivationNode found, String customMessage, String counterexample) {
public class RefinementErrorDTO extends LJErrorDTO {

public final ValDerivationNode expected;
public final ValDerivationNode found;
public final String customMessage;
public final String counterexample;

public RefinementErrorDTO(RefinementError error) {
super("refinement-error", error);
this.expected = error.getExpected();
this.found = error.getFound();
this.customMessage = error.getCustomMessage();
this.counterexample = error.getCounterExampleString();
}

public static RefinementErrorDTO from(RefinementError error) {
return new RefinementErrorDTO("error", "refinement-error", error.getTitle(), error.getMessage(), error.getFile(),
SourcePositionDTO.from(error.getPosition()), TranslationTableDTO.from(error.getTranslationTable()), error.getExpected(), error.getFound(), error.getCustomMessage(), error.getCounterExampleString());
return new RefinementErrorDTO(error);
}
}
15 changes: 9 additions & 6 deletions server/src/main/java/dtos/errors/StateConflictErrorDTO.java
Original file line number Diff line number Diff line change
@@ -1,17 +1,20 @@
package dtos.errors;

import dtos.diagnostics.SourcePositionDTO;
import dtos.diagnostics.TranslationTableDTO;
import liquidjava.diagnostics.errors.StateConflictError;

/**
* DTO for serializing StateConflictError instances to JSON
*/
public record StateConflictErrorDTO(String category, String type, String title, String message, String file, SourcePositionDTO position,
TranslationTableDTO translationTable, String state) {
public class StateConflictErrorDTO extends LJErrorDTO {

public final String state;

public StateConflictErrorDTO(StateConflictError error) {
super("state-conflict-error", error);
this.state = error.getState();
}

public static StateConflictErrorDTO from(StateConflictError error) {
return new StateConflictErrorDTO("error", "state-conflict-error", error.getTitle(), error.getMessage(), error.getFile(),
SourcePositionDTO.from(error.getPosition()), TranslationTableDTO.from(error.getTranslationTable()), error.getState());
return new StateConflictErrorDTO(error);
}
}
20 changes: 13 additions & 7 deletions server/src/main/java/dtos/errors/StateRefinementErrorDTO.java
Original file line number Diff line number Diff line change
@@ -1,19 +1,25 @@
package dtos.errors;

import dtos.diagnostics.SourcePositionDTO;
import dtos.diagnostics.TranslationTableDTO;
import liquidjava.diagnostics.errors.StateRefinementError;
import liquidjava.rj_language.opt.derivation_node.ValDerivationNode;

/**
* DTO for serializing StateRefinementError instances to JSON
*/
public record StateRefinementErrorDTO(String category, String type, String title, String message, String file, SourcePositionDTO position,
TranslationTableDTO translationTable, ValDerivationNode expected, ValDerivationNode found, String customMessage) {
public class StateRefinementErrorDTO extends LJErrorDTO {

public final ValDerivationNode expected;
public final ValDerivationNode found;
public final String customMessage;

public StateRefinementErrorDTO(StateRefinementError error) {
super("state-refinement-error", error);
this.expected = error.getExpected();
this.found = error.getFound();
this.customMessage = error.getCustomMessage();
}

public static StateRefinementErrorDTO from(StateRefinementError error) {
return new StateRefinementErrorDTO("error", "state-refinement-error", error.getTitle(), error.getMessage(), error.getFile(),
SourcePositionDTO.from(error.getPosition()), TranslationTableDTO.from(error.getTranslationTable()), error.getExpected(),
error.getFound(), error.getCustomMessage());
return new StateRefinementErrorDTO(error);
}
}
14 changes: 9 additions & 5 deletions server/src/main/java/dtos/errors/SyntaxErrorDTO.java
Original file line number Diff line number Diff line change
@@ -1,16 +1,20 @@
package dtos.errors;

import dtos.diagnostics.SourcePositionDTO;
import liquidjava.diagnostics.errors.SyntaxError;

/**
* DTO for serializing SyntaxError instances to JSON
*/
public record SyntaxErrorDTO(String category, String type, String title, String message, String file, SourcePositionDTO position,
String refinement) {
public class SyntaxErrorDTO extends LJErrorDTO {

public final String refinement;

public SyntaxErrorDTO(SyntaxError error) {
super("syntax-error", error);
this.refinement = error.getRefinement();
}

public static SyntaxErrorDTO from(SyntaxError error) {
return new SyntaxErrorDTO("error", "syntax-error", error.getTitle(), error.getMessage(), error.getFile(),
SourcePositionDTO.from(error.getPosition()), error.getRefinement());
return new SyntaxErrorDTO(error);
}
}
10 changes: 6 additions & 4 deletions server/src/main/java/dtos/warnings/CustomWarningDTO.java
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
package dtos.warnings;

import dtos.diagnostics.SourcePositionDTO;
import liquidjava.diagnostics.warnings.CustomWarning;

/**
* DTO for serializing CustomError instances to JSON
*/
public record CustomWarningDTO(String category, String type, String title, String message, String file, SourcePositionDTO position) {
public class CustomWarningDTO extends LJWarningDTO {

public CustomWarningDTO(CustomWarning warning) {
super("custom-warning", warning);
}

public static CustomWarningDTO from(CustomWarning warning) {
return new CustomWarningDTO("warning", "custom-warning", warning.getTitle(), warning.getMessage(), warning.getFile(),
SourcePositionDTO.from(warning.getPosition()));
return new CustomWarningDTO(warning);
}
}
Original file line number Diff line number Diff line change
@@ -1,16 +1,20 @@
package dtos.warnings;

import dtos.diagnostics.SourcePositionDTO;
import liquidjava.diagnostics.warnings.ExternalClassNotFoundWarning;

/**
* DTO for serializing ExternalClassNotFoundWarning instances to JSON
*/
public record ExternalClassNotFoundWarningDTO(String category, String type, String title, String message, String file,
SourcePositionDTO position, String className) {
public class ExternalClassNotFoundWarningDTO extends LJWarningDTO {

public final String className;

public ExternalClassNotFoundWarningDTO(ExternalClassNotFoundWarning warning) {
super("external-class-not-found-warning", warning);
this.className = warning.getClassName();
}

public static ExternalClassNotFoundWarningDTO from(ExternalClassNotFoundWarning warning) {
return new ExternalClassNotFoundWarningDTO("warning", "external-class-not-found-warning", warning.getTitle(), warning.getMessage(), warning.getFile(),
SourcePositionDTO.from(warning.getPosition()), warning.getClassName());
return new ExternalClassNotFoundWarningDTO(warning);
}
}
Loading