Skip to content
This repository has been archived by the owner on Jun 29, 2024. It is now read-only.

Improve position and error system #71

Merged
merged 6 commits into from
Dec 3, 2023
Merged
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
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,10 +86,10 @@ your code.
Dev warning are show like this :

```
DEV WARNING <code> <message>
<filename>
<line> |<code>
| ^
DEV WARNING[<code>]: <message>
--> <filename>
<line> | <code>
| ^
```

| Dev code | Meaning | File |
Expand Down
2 changes: 1 addition & 1 deletion src/lib/FilCompiler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ namespace filc {
collector->addError(
new filc::message::Error(filc::message::ERROR,
"Module " + module_name + " not found",
new filc::utils::Position(program->getFilename(), 0, 0))
new filc::utils::SimplePosition(program->getFilename(), 0, 0))
);
}
}
Expand Down
26 changes: 13 additions & 13 deletions src/lib/ast/AST.h
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ namespace filc::ast {
public:
virtual ~AbstractExpression();

auto setPosition(filc::utils::Position *position) -> void;
auto setPosition(filc::utils::AbstractPosition *position) -> void;

AbstractExpression(const AbstractExpression &other) = default;

Expand All @@ -89,7 +89,7 @@ namespace filc::ast {

auto setExported(bool exported) -> void;

[[nodiscard]] auto getPosition() const -> filc::utils::Position *;
[[nodiscard]] auto getPosition() const -> filc::utils::AbstractPosition *;

[[nodiscard]] auto getExpressionType() const -> std::shared_ptr<AbstractType>;

Expand All @@ -107,7 +107,7 @@ namespace filc::ast {

private:
bool _exported{false};
filc::utils::Position *_position{nullptr};
filc::utils::AbstractPosition *_position{nullptr};
std::shared_ptr<AbstractType> _expression_type;

protected:
Expand Down Expand Up @@ -446,12 +446,12 @@ namespace filc::ast {
[[nodiscard]] virtual auto dumpPreLambdaType(std::shared_ptr<AbstractType> type,
filc::environment::Environment *environment,
filc::message::MessageCollector *collector,
filc::utils::Position *position) const -> std::shared_ptr<LambdaType> = 0;
filc::utils::AbstractPosition *position) const -> std::shared_ptr<LambdaType> = 0;

[[nodiscard]] virtual auto dumpPostLambdaType(std::shared_ptr<AbstractType> type,
filc::environment::Environment *environment,
filc::message::MessageCollector *collector,
filc::utils::Position *position) const -> std::shared_ptr<LambdaType> = 0;
filc::utils::AbstractPosition *position) const -> std::shared_ptr<LambdaType> = 0;

protected:
Operator() = default;
Expand Down Expand Up @@ -490,12 +490,12 @@ namespace filc::ast {
[[nodiscard]] auto dumpPreLambdaType(std::shared_ptr<AbstractType> type,
filc::environment::Environment *environment,
filc::message::MessageCollector *collector,
filc::utils::Position *position) const -> std::shared_ptr<LambdaType> override;
filc::utils::AbstractPosition *position) const -> std::shared_ptr<LambdaType> override;

[[nodiscard]] auto dumpPostLambdaType(std::shared_ptr<AbstractType> type,
filc::environment::Environment *environment,
filc::message::MessageCollector *collector,
filc::utils::Position *position) const -> std::shared_ptr<LambdaType> override;
filc::utils::AbstractPosition *position) const -> std::shared_ptr<LambdaType> override;

private:
OPERATOR _operator;
Expand All @@ -514,12 +514,12 @@ namespace filc::ast {
[[nodiscard]] auto dumpPreLambdaType(std::shared_ptr<AbstractType> type,
filc::environment::Environment *environment,
filc::message::MessageCollector *collector,
filc::utils::Position *position) const -> std::shared_ptr<LambdaType> override;
filc::utils::AbstractPosition *position) const -> std::shared_ptr<LambdaType> override;

[[nodiscard]] auto dumpPostLambdaType(std::shared_ptr<AbstractType> type,
filc::environment::Environment *environment,
filc::message::MessageCollector *collector,
filc::utils::Position *position) const -> std::shared_ptr<LambdaType> override;
filc::utils::AbstractPosition *position) const -> std::shared_ptr<LambdaType> override;

private:
AbstractExpression *_expression;
Expand All @@ -538,12 +538,12 @@ namespace filc::ast {
[[nodiscard]] auto dumpPreLambdaType(std::shared_ptr<AbstractType> type,
filc::environment::Environment *environment,
filc::message::MessageCollector *collector,
filc::utils::Position *position) const -> std::shared_ptr<LambdaType> override;
filc::utils::AbstractPosition *position) const -> std::shared_ptr<LambdaType> override;

[[nodiscard]] auto dumpPostLambdaType(std::shared_ptr<AbstractType> type,
filc::environment::Environment *environment,
filc::message::MessageCollector *collector,
filc::utils::Position *position) const -> std::shared_ptr<LambdaType> override;
filc::utils::AbstractPosition *position) const -> std::shared_ptr<LambdaType> override;

private:
std::vector<AbstractExpression *> _expressions;
Expand All @@ -562,12 +562,12 @@ namespace filc::ast {
[[nodiscard]] auto dumpPreLambdaType(std::shared_ptr<AbstractType> type,
filc::environment::Environment *environment,
filc::message::MessageCollector *collector,
filc::utils::Position *position) const -> std::shared_ptr<LambdaType> override;
filc::utils::AbstractPosition *position) const -> std::shared_ptr<LambdaType> override;

[[nodiscard]] auto dumpPostLambdaType(std::shared_ptr<AbstractType> type,
filc::environment::Environment *environment,
filc::message::MessageCollector *collector,
filc::utils::Position *position) const -> std::shared_ptr<LambdaType> override;
filc::utils::AbstractPosition *position) const -> std::shared_ptr<LambdaType> override;

private:
Operator *_inner_operator;
Expand Down
4 changes: 2 additions & 2 deletions src/lib/ast/AbstractExpression.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,11 +39,11 @@ namespace filc::ast {
_exported = exported;
}

auto AbstractExpression::getPosition() const -> filc::utils::Position * {
auto AbstractExpression::getPosition() const -> filc::utils::AbstractPosition * {
return _position;
}

auto AbstractExpression::setPosition(filc::utils::Position *position) -> void {
auto AbstractExpression::setPosition(filc::utils::AbstractPosition *position) -> void {
_position = position;
}

Expand Down
4 changes: 2 additions & 2 deletions src/lib/ast/ArrayOperator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ namespace filc::ast {
auto ArrayOperator::dumpPreLambdaType(std::shared_ptr<AbstractType> type,
filc::environment::Environment *environment,
filc::message::MessageCollector *collector,
filc::utils::Position *position) const -> std::shared_ptr<LambdaType> {
filc::utils::AbstractPosition *position) const -> std::shared_ptr<LambdaType> {
collector->addError(new filc::message::DevWarning(
3,
position,
Expand All @@ -56,7 +56,7 @@ namespace filc::ast {
auto ArrayOperator::dumpPostLambdaType(std::shared_ptr<AbstractType> type,
filc::environment::Environment *environment,
filc::message::MessageCollector *collector,
filc::utils::Position *position) const -> std::shared_ptr<LambdaType> {
filc::utils::AbstractPosition *position) const -> std::shared_ptr<LambdaType> {
_expression->resolveType(environment, collector, nullptr);
auto expression_type = _expression->getExpressionType();
if (expression_type == nullptr) {
Expand Down
4 changes: 2 additions & 2 deletions src/lib/ast/AssignationOperator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ namespace filc::ast {
auto AssignationOperator::dumpPreLambdaType(std::shared_ptr<AbstractType> type,
filc::environment::Environment *environment,
filc::message::MessageCollector *collector,
filc::utils::Position *position) const -> std::shared_ptr<LambdaType> {
filc::utils::AbstractPosition *position) const -> std::shared_ptr<LambdaType> {
collector->addError(new filc::message::DevWarning(
3,
position,
Expand All @@ -56,7 +56,7 @@ namespace filc::ast {
auto AssignationOperator::dumpPostLambdaType(std::shared_ptr<AbstractType> type,
filc::environment::Environment *environment,
filc::message::MessageCollector *collector,
filc::utils::Position *position) const -> std::shared_ptr<LambdaType> {
filc::utils::AbstractPosition *position) const -> std::shared_ptr<LambdaType> {
collector->addError(new filc::message::DevWarning(
3,
position,
Expand Down
2 changes: 1 addition & 1 deletion src/lib/ast/CharacterLiteral.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
if (token != nullptr) {
filc::message::MessageCollector::getCollector()->addError(new filc::message::DevWarning(
2,
new filc::utils::Position(token),
new filc::utils::SimplePosition(token),

Check warning on line 51 in src/lib/ast/CharacterLiteral.cpp

View check run for this annotation

Codecov / codecov/patch

src/lib/ast/CharacterLiteral.cpp#L51

Added line #L51 was not covered by tests
"Lexer found a character that is not regular: " + snippet
));
}
Expand Down
4 changes: 2 additions & 2 deletions src/lib/ast/ClassicOperator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ namespace filc::ast {
auto ClassicOperator::dumpPreLambdaType(std::shared_ptr<AbstractType> type,
filc::environment::Environment *environment,
filc::message::MessageCollector *collector,
filc::utils::Position *position) const -> std::shared_ptr<LambdaType> {
filc::utils::AbstractPosition *position) const -> std::shared_ptr<LambdaType> {
auto ptr = std::make_shared<PointerType>(type);
switch (_operator) {
case PLUSPLUS:
Expand Down Expand Up @@ -118,7 +118,7 @@ namespace filc::ast {
auto ClassicOperator::dumpPostLambdaType(std::shared_ptr<AbstractType> type,
filc::environment::Environment *environment,
filc::message::MessageCollector *collector,
filc::utils::Position *position) const -> std::shared_ptr<LambdaType> {
filc::utils::AbstractPosition *position) const -> std::shared_ptr<LambdaType> {
auto ptr = std::make_shared<PointerType>(type);
switch (_operator) {
case PLUSPLUS:
Expand Down
4 changes: 2 additions & 2 deletions src/lib/ast/FunctionOperator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ namespace filc::ast {
auto FunctionOperator::dumpPreLambdaType(std::shared_ptr<AbstractType> type,
filc::environment::Environment *environment,
filc::message::MessageCollector *collector,
filc::utils::Position *position) const -> std::shared_ptr<LambdaType> {
filc::utils::AbstractPosition *position) const -> std::shared_ptr<LambdaType> {
collector->addError(new filc::message::DevWarning(
3,
position,
Expand All @@ -58,7 +58,7 @@ namespace filc::ast {
auto FunctionOperator::dumpPostLambdaType(std::shared_ptr<AbstractType> type,
filc::environment::Environment *environment,
filc::message::MessageCollector *collector,
filc::utils::Position *position) const -> std::shared_ptr<LambdaType> {
filc::utils::AbstractPosition *position) const -> std::shared_ptr<LambdaType> {
std::vector<std::shared_ptr<AbstractType>> args_types;
for (const auto &expression: _expressions) {
expression->resolveType(environment, collector, nullptr);
Expand Down
2 changes: 1 addition & 1 deletion src/lib/ast/Identifier.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
namespace filc::ast {
Identifier::Identifier(antlr4::Token *token)
: _name(token->getText()) {
setPosition(new filc::utils::Position(token));
setPosition(new filc::utils::SimplePosition(token));
}

Identifier::Identifier(std::string name)
Expand Down
Loading