semantic

package
v0.0.0-...-7d08e18 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 29, 2019 License: MIT Imports: 8 Imported by: 2

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func IsNodeTerminating

func IsNodeTerminating(n ast.Node) bool

func SemCheck

func SemCheck(module *ast.Module, ignoreUnused bool)

Types

type AttributeCheck

type AttributeCheck struct {
}

func (*AttributeCheck) CheckAttrsDistanceFromLine

func (v *AttributeCheck) CheckAttrsDistanceFromLine(s *SemanticAnalyzer, attrs parser.AttrGroup, line int, declType, declName string)

func (*AttributeCheck) CheckFunctionDecl

func (v *AttributeCheck) CheckFunctionDecl(s *SemanticAnalyzer, n *ast.FunctionDecl)

func (*AttributeCheck) CheckStructType

func (v *AttributeCheck) CheckStructType(s *SemanticAnalyzer, n ast.StructType)

func (*AttributeCheck) CheckVariableDecl

func (v *AttributeCheck) CheckVariableDecl(s *SemanticAnalyzer, n *ast.VariableDecl)

func (*AttributeCheck) EnterScope

func (v *AttributeCheck) EnterScope(s *SemanticAnalyzer)

func (*AttributeCheck) ExitScope

func (v *AttributeCheck) ExitScope(s *SemanticAnalyzer)

func (*AttributeCheck) Finalize

func (v *AttributeCheck) Finalize(s *SemanticAnalyzer)

func (*AttributeCheck) Init

func (v *AttributeCheck) Init(s *SemanticAnalyzer)

func (AttributeCheck) Name

func (_ AttributeCheck) Name() string

func (*AttributeCheck) PostVisit

func (v *AttributeCheck) PostVisit(s *SemanticAnalyzer, n ast.Node)

func (*AttributeCheck) Visit

func (v *AttributeCheck) Visit(s *SemanticAnalyzer, n ast.Node)

type BreakAndNextCheck

type BreakAndNextCheck struct {
	// contains filtered or unexported fields
}

func (*BreakAndNextCheck) EnterScope

func (v *BreakAndNextCheck) EnterScope(s *SemanticAnalyzer)

func (*BreakAndNextCheck) ExitScope

func (v *BreakAndNextCheck) ExitScope(s *SemanticAnalyzer)

func (*BreakAndNextCheck) Finalize

func (v *BreakAndNextCheck) Finalize(s *SemanticAnalyzer)

func (*BreakAndNextCheck) Init

func (v *BreakAndNextCheck) Init(s *SemanticAnalyzer)

func (BreakAndNextCheck) Name

func (_ BreakAndNextCheck) Name() string

func (*BreakAndNextCheck) PostVisit

func (v *BreakAndNextCheck) PostVisit(s *SemanticAnalyzer, n ast.Node)

func (*BreakAndNextCheck) Visit

func (v *BreakAndNextCheck) Visit(s *SemanticAnalyzer, n ast.Node)

type DeprecatedCheck

type DeprecatedCheck struct {
}

func (*DeprecatedCheck) EnterScope

func (v *DeprecatedCheck) EnterScope(s *SemanticAnalyzer)

func (*DeprecatedCheck) ExitScope

func (v *DeprecatedCheck) ExitScope(s *SemanticAnalyzer)

func (*DeprecatedCheck) Finalize

func (v *DeprecatedCheck) Finalize(s *SemanticAnalyzer)

func (*DeprecatedCheck) Init

func (v *DeprecatedCheck) Init(s *SemanticAnalyzer)

func (DeprecatedCheck) Name

func (_ DeprecatedCheck) Name() string

func (*DeprecatedCheck) PostVisit

func (v *DeprecatedCheck) PostVisit(s *SemanticAnalyzer, n ast.Node)

func (*DeprecatedCheck) Visit

func (v *DeprecatedCheck) Visit(s *SemanticAnalyzer, n ast.Node)

func (*DeprecatedCheck) WarnDeprecated

func (v *DeprecatedCheck) WarnDeprecated(s *SemanticAnalyzer, thing ast.Locatable, typ, name, message string)

type ImmutableAssignCheck

type ImmutableAssignCheck struct {
}

func (*ImmutableAssignCheck) EnterScope

func (v *ImmutableAssignCheck) EnterScope(s *SemanticAnalyzer)

func (*ImmutableAssignCheck) ExitScope

func (v *ImmutableAssignCheck) ExitScope(s *SemanticAnalyzer)

func (*ImmutableAssignCheck) Finalize

func (v *ImmutableAssignCheck) Finalize(s *SemanticAnalyzer)

func (*ImmutableAssignCheck) Init

func (ImmutableAssignCheck) Name

func (_ ImmutableAssignCheck) Name() string

func (*ImmutableAssignCheck) PostVisit

func (v *ImmutableAssignCheck) PostVisit(s *SemanticAnalyzer, n ast.Node)

func (*ImmutableAssignCheck) Visit

type MiscCheck

type MiscCheck struct {
	InFunction int
}

func (*MiscCheck) EnterScope

func (v *MiscCheck) EnterScope(s *SemanticAnalyzer)

func (*MiscCheck) ExitScope

func (v *MiscCheck) ExitScope(s *SemanticAnalyzer)

func (*MiscCheck) Finalize

func (v *MiscCheck) Finalize(s *SemanticAnalyzer)

func (*MiscCheck) Init

func (v *MiscCheck) Init(s *SemanticAnalyzer)

func (MiscCheck) Name

func (_ MiscCheck) Name() string

func (*MiscCheck) PostVisit

func (v *MiscCheck) PostVisit(s *SemanticAnalyzer, n ast.Node)

func (*MiscCheck) Visit

func (v *MiscCheck) Visit(s *SemanticAnalyzer, n ast.Node)

type RecursiveDefinitionCheck

type RecursiveDefinitionCheck struct {
}

func (*RecursiveDefinitionCheck) EnterScope

func (v *RecursiveDefinitionCheck) EnterScope(s *SemanticAnalyzer)

func (*RecursiveDefinitionCheck) ExitScope

func (v *RecursiveDefinitionCheck) ExitScope(s *SemanticAnalyzer)

func (*RecursiveDefinitionCheck) Finalize

func (*RecursiveDefinitionCheck) Init

func (RecursiveDefinitionCheck) Name

func (*RecursiveDefinitionCheck) PostVisit

func (v *RecursiveDefinitionCheck) PostVisit(s *SemanticAnalyzer, n ast.Node)

func (*RecursiveDefinitionCheck) Visit

type ReferenceCheck

type ReferenceCheck struct {
	InFunction int
}

func (*ReferenceCheck) EnterScope

func (v *ReferenceCheck) EnterScope(s *SemanticAnalyzer)

func (*ReferenceCheck) ExitScope

func (v *ReferenceCheck) ExitScope(s *SemanticAnalyzer)

func (*ReferenceCheck) Finalize

func (v *ReferenceCheck) Finalize(s *SemanticAnalyzer)

func (*ReferenceCheck) Init

func (v *ReferenceCheck) Init(s *SemanticAnalyzer)

func (ReferenceCheck) Name

func (_ ReferenceCheck) Name() string

func (*ReferenceCheck) PostVisit

func (v *ReferenceCheck) PostVisit(s *SemanticAnalyzer, n ast.Node)

func (*ReferenceCheck) Visit

func (v *ReferenceCheck) Visit(s *SemanticAnalyzer, n ast.Node)

type SemanticAnalyzer

type SemanticAnalyzer struct {
	Module    *ast.Module
	Submodule *ast.Submodule

	Check SemanticCheck
	// contains filtered or unexported fields
}

func (*SemanticAnalyzer) EnterScope

func (v *SemanticAnalyzer) EnterScope()

func (*SemanticAnalyzer) Err

func (v *SemanticAnalyzer) Err(thing ast.Locatable, err string, stuff ...interface{})

func (*SemanticAnalyzer) ExitScope

func (v *SemanticAnalyzer) ExitScope()

func (*SemanticAnalyzer) Finalize

func (v *SemanticAnalyzer) Finalize()

Finalize is called after all checks have been run, and should be used for cleaning up and any checks that depend on having completely traversed the syntax tree.

func (*SemanticAnalyzer) Init

func (v *SemanticAnalyzer) Init()

the initial check for a semantic pass this will be called _once_ and should be used to initialize things, etc...

func (*SemanticAnalyzer) PostVisit

func (v *SemanticAnalyzer) PostVisit(n *ast.Node)

func (*SemanticAnalyzer) Visit

func (v *SemanticAnalyzer) Visit(n *ast.Node) bool

func (*SemanticAnalyzer) Warn

func (v *SemanticAnalyzer) Warn(thing ast.Locatable, err string, stuff ...interface{})

type SemanticCheck

type SemanticCheck interface {
	Init(s *SemanticAnalyzer)
	EnterScope(s *SemanticAnalyzer)
	ExitScope(s *SemanticAnalyzer)
	Visit(*SemanticAnalyzer, ast.Node)
	PostVisit(*SemanticAnalyzer, ast.Node)
	Finalize(*SemanticAnalyzer)
	Name() string
}

type TypeCheck

type TypeCheck struct {
	// contains filtered or unexported fields
}

func (*TypeCheck) CheckArrayAccessExpr

func (v *TypeCheck) CheckArrayAccessExpr(s *SemanticAnalyzer, expr *ast.ArrayAccessExpr)

func (*TypeCheck) CheckArrayLenExpr

func (v *TypeCheck) CheckArrayLenExpr(s *SemanticAnalyzer, expr *ast.ArrayLenExpr)

func (*TypeCheck) CheckAssignStat

func (v *TypeCheck) CheckAssignStat(s *SemanticAnalyzer, stat *ast.AssignStat)

func (*TypeCheck) CheckBinaryExpr

func (v *TypeCheck) CheckBinaryExpr(s *SemanticAnalyzer, expr *ast.BinaryExpr)

func (*TypeCheck) CheckBinopAssignStat

func (v *TypeCheck) CheckBinopAssignStat(s *SemanticAnalyzer, stat *ast.BinopAssignStat)

func (*TypeCheck) CheckCallExpr

func (v *TypeCheck) CheckCallExpr(s *SemanticAnalyzer, expr *ast.CallExpr)

func (*TypeCheck) CheckCastExpr

func (v *TypeCheck) CheckCastExpr(s *SemanticAnalyzer, expr *ast.CastExpr)

func (*TypeCheck) CheckCompositeLiteral

func (v *TypeCheck) CheckCompositeLiteral(s *SemanticAnalyzer, lit *ast.CompositeLiteral)

func (*TypeCheck) CheckDerefAccessExpr

func (v *TypeCheck) CheckDerefAccessExpr(s *SemanticAnalyzer, expr *ast.DerefAccessExpr)

func (*TypeCheck) CheckDestructAssignStat

func (v *TypeCheck) CheckDestructAssignStat(s *SemanticAnalyzer, stat *ast.DestructAssignStat)

func (*TypeCheck) CheckDestructBinopAssignStat

func (v *TypeCheck) CheckDestructBinopAssignStat(s *SemanticAnalyzer, stat *ast.DestructBinopAssignStat)

func (*TypeCheck) CheckDestructVarDecl

func (v *TypeCheck) CheckDestructVarDecl(s *SemanticAnalyzer, decl *ast.DestructVarDecl)

func (*TypeCheck) CheckEnumLiteral

func (v *TypeCheck) CheckEnumLiteral(s *SemanticAnalyzer, lit *ast.EnumLiteral)

func (*TypeCheck) CheckIfStat

func (v *TypeCheck) CheckIfStat(s *SemanticAnalyzer, stat *ast.IfStat)

func (*TypeCheck) CheckMatchStat

func (v *TypeCheck) CheckMatchStat(s *SemanticAnalyzer, stat *ast.MatchStat)

func (*TypeCheck) CheckNumericLiteral

func (v *TypeCheck) CheckNumericLiteral(s *SemanticAnalyzer, lit *ast.NumericLiteral)

func (*TypeCheck) CheckReturnStat

func (v *TypeCheck) CheckReturnStat(s *SemanticAnalyzer, stat *ast.ReturnStat)

func (*TypeCheck) CheckStructAccessExpr

func (v *TypeCheck) CheckStructAccessExpr(s *SemanticAnalyzer, access *ast.StructAccessExpr)

func (*TypeCheck) CheckTupleLiteral

func (v *TypeCheck) CheckTupleLiteral(s *SemanticAnalyzer, lit *ast.TupleLiteral)

parentEnum is nil if not in enum

func (*TypeCheck) CheckUnaryExpr

func (v *TypeCheck) CheckUnaryExpr(s *SemanticAnalyzer, expr *ast.UnaryExpr)

func (*TypeCheck) CheckVariableDecl

func (v *TypeCheck) CheckVariableDecl(s *SemanticAnalyzer, decl *ast.VariableDecl)

func (*TypeCheck) EnterScope

func (v *TypeCheck) EnterScope(s *SemanticAnalyzer)

func (*TypeCheck) ExitScope

func (v *TypeCheck) ExitScope(s *SemanticAnalyzer)

func (*TypeCheck) Finalize

func (v *TypeCheck) Finalize(s *SemanticAnalyzer)

func (*TypeCheck) Function

func (v *TypeCheck) Function() *ast.Function

func (*TypeCheck) Init

func (v *TypeCheck) Init(s *SemanticAnalyzer)

func (TypeCheck) Name

func (_ TypeCheck) Name() string

func (*TypeCheck) PostVisit

func (v *TypeCheck) PostVisit(s *SemanticAnalyzer, n ast.Node)

func (*TypeCheck) Visit

func (v *TypeCheck) Visit(s *SemanticAnalyzer, n ast.Node)

type UnreachableCheck

type UnreachableCheck struct {
}

func (*UnreachableCheck) EnterScope

func (v *UnreachableCheck) EnterScope(s *SemanticAnalyzer)

func (*UnreachableCheck) ExitScope

func (v *UnreachableCheck) ExitScope(s *SemanticAnalyzer)

func (*UnreachableCheck) Finalize

func (v *UnreachableCheck) Finalize(s *SemanticAnalyzer)

func (*UnreachableCheck) Init

func (v *UnreachableCheck) Init(s *SemanticAnalyzer)

func (UnreachableCheck) Name

func (_ UnreachableCheck) Name() string

func (*UnreachableCheck) PostVisit

func (v *UnreachableCheck) PostVisit(s *SemanticAnalyzer, n ast.Node)

func (*UnreachableCheck) Visit

func (v *UnreachableCheck) Visit(s *SemanticAnalyzer, n ast.Node)

type UnusedCheck

type UnusedCheck struct {
	// contains filtered or unexported fields
}

func (*UnusedCheck) AnalyzeUsage

func (v *UnusedCheck) AnalyzeUsage(s *SemanticAnalyzer)

func (*UnusedCheck) EnterScope

func (v *UnusedCheck) EnterScope(s *SemanticAnalyzer)

func (*UnusedCheck) ExitScope

func (v *UnusedCheck) ExitScope(s *SemanticAnalyzer)

func (*UnusedCheck) Finalize

func (v *UnusedCheck) Finalize(s *SemanticAnalyzer)

func (*UnusedCheck) Init

func (v *UnusedCheck) Init(s *SemanticAnalyzer)

func (UnusedCheck) Name

func (_ UnusedCheck) Name() string

func (*UnusedCheck) PostVisit

func (v *UnusedCheck) PostVisit(s *SemanticAnalyzer, n ast.Node)

func (*UnusedCheck) Visit

func (v *UnusedCheck) Visit(s *SemanticAnalyzer, n ast.Node)

type UseBeforeDeclareCheck

type UseBeforeDeclareCheck struct {
	// contains filtered or unexported fields
}

func (*UseBeforeDeclareCheck) EnterScope

func (v *UseBeforeDeclareCheck) EnterScope(s *SemanticAnalyzer)

func (*UseBeforeDeclareCheck) ExitScope

func (v *UseBeforeDeclareCheck) ExitScope(s *SemanticAnalyzer)

func (*UseBeforeDeclareCheck) Finalize

func (v *UseBeforeDeclareCheck) Finalize(s *SemanticAnalyzer)

func (*UseBeforeDeclareCheck) Init

func (UseBeforeDeclareCheck) Name

func (_ UseBeforeDeclareCheck) Name() string

func (*UseBeforeDeclareCheck) PostVisit

func (v *UseBeforeDeclareCheck) PostVisit(s *SemanticAnalyzer, n ast.Node)

func (*UseBeforeDeclareCheck) Visit

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL