aboutsummaryrefslogtreecommitdiffstats
path: root/pkg
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2018-08-01 16:30:17 +0200
committerDmitry Vyukov <dvyukov@google.com>2018-08-02 16:57:31 +0200
commitaf15ef43a838e4be0537da7e9dd03ad3eb71b544 (patch)
tree94e1db0c214449053ebeecdfe544ce991afaad67 /pkg
parent3a4641d90c293137bd33e6472e721a4c15b0d7da (diff)
pkg/compiler: refactor checkNames
Too complex. Split into 2 functions. Update #538
Diffstat (limited to 'pkg')
-rw-r--r--pkg/compiler/check.go12
1 files changed, 10 insertions, 2 deletions
diff --git a/pkg/compiler/check.go b/pkg/compiler/check.go
index a0d0f7fed..195ca1245 100644
--- a/pkg/compiler/check.go
+++ b/pkg/compiler/check.go
@@ -14,6 +14,7 @@ import (
)
func (comp *compiler) typecheck() {
+ comp.checkDirectives()
comp.checkNames()
comp.checkFields()
comp.checkTypedefs()
@@ -31,11 +32,10 @@ func (comp *compiler) check() {
comp.checkDupConsts()
}
-func (comp *compiler) checkNames() {
+func (comp *compiler) checkDirectives() {
includes := make(map[string]bool)
incdirs := make(map[string]bool)
defines := make(map[string]bool)
- calls := make(map[string]*ast.Call)
for _, decl := range comp.desc.Nodes {
switch n := decl.(type) {
case *ast.Include:
@@ -59,6 +59,14 @@ func (comp *compiler) checkNames() {
comp.error(n.Pos, "duplicate define %v", name)
}
defines[path] = true
+ }
+ }
+}
+
+func (comp *compiler) checkNames() {
+ calls := make(map[string]*ast.Call)
+ for _, decl := range comp.desc.Nodes {
+ switch n := decl.(type) {
case *ast.Resource, *ast.Struct, *ast.TypeDef:
pos, typ, name := decl.Info()
if reservedName[name] {