Skip to content
This repository has been archived by the owner on Mar 1, 2022. It is now read-only.

Commit

Permalink
fix some segfaults
Browse files Browse the repository at this point in the history
  • Loading branch information
WebFreak001 committed Sep 13, 2018
1 parent bf0d84c commit fd7c899
Showing 1 changed file with 18 additions and 0 deletions.
18 changes: 18 additions & 0 deletions source/workspaced/com/dscanner.d
Original file line number Diff line number Diff line change
Expand Up @@ -316,6 +316,8 @@ final class DefinitionFinder : ASTVisitor
{
override void visit(const ClassDeclaration dec)
{
if (!dec.structBody)
return;
definitions ~= makeDefinition(dec.name.text, dec.name.line, "c", context,
[cast(int) dec.structBody.startLocation, cast(int) dec.structBody.endLocation]);
auto c = context;
Expand All @@ -326,6 +328,8 @@ final class DefinitionFinder : ASTVisitor

override void visit(const StructDeclaration dec)
{
if (!dec.structBody)
return;
if (dec.name == tok!"")
{
dec.accept(this);
Expand All @@ -341,6 +345,8 @@ final class DefinitionFinder : ASTVisitor

override void visit(const InterfaceDeclaration dec)
{
if (!dec.structBody)
return;
definitions ~= makeDefinition(dec.name.text, dec.name.line, "i", context,
[cast(int) dec.structBody.startLocation, cast(int) dec.structBody.endLocation]);
auto c = context;
Expand All @@ -363,6 +369,8 @@ final class DefinitionFinder : ASTVisitor

override void visit(const FunctionDeclaration dec)
{
if (!dec.functionBody || !dec.functionBody.blockStatement)
return;
auto def = makeDefinition(dec.name.text, dec.name.line, "f", context,
[cast(int) dec.functionBody.blockStatement.startLocation,
cast(int) dec.functionBody.blockStatement.endLocation]);
Expand All @@ -374,6 +382,8 @@ final class DefinitionFinder : ASTVisitor

override void visit(const Constructor dec)
{
if (!dec.functionBody || !dec.functionBody.blockStatement)
return;
auto def = makeDefinition("this", dec.line, "f", context,
[cast(int) dec.functionBody.blockStatement.startLocation,
cast(int) dec.functionBody.blockStatement.endLocation]);
Expand All @@ -383,13 +393,17 @@ final class DefinitionFinder : ASTVisitor

override void visit(const Destructor dec)
{
if (!dec.functionBody || !dec.functionBody.blockStatement)
return;
definitions ~= makeDefinition("~this", dec.line, "f", context,
[cast(int) dec.functionBody.blockStatement.startLocation,
cast(int) dec.functionBody.blockStatement.endLocation]);
}

override void visit(const EnumDeclaration dec)
{
if (!dec.enumBody)
return;
definitions ~= makeDefinition(dec.name.text, dec.name.line, "g", context,
[cast(int) dec.enumBody.startLocation, cast(int) dec.enumBody.endLocation]);
auto c = context;
Expand All @@ -400,6 +414,8 @@ final class DefinitionFinder : ASTVisitor

override void visit(const UnionDeclaration dec)
{
if (!dec.structBody)
return;
if (dec.name == tok!"")
{
dec.accept(this);
Expand Down Expand Up @@ -443,6 +459,8 @@ final class DefinitionFinder : ASTVisitor

override void visit(const Invariant dec)
{
if (!dec.blockStatement)
return;
definitions ~= makeDefinition("invariant", dec.line, "v", context,
[cast(int) dec.index, cast(int) dec.blockStatement.endLocation]);
}
Expand Down

0 comments on commit fd7c899

Please sign in to comment.