[tools]: Minor intrinsic-gen changes
Have the resolver emit unique parameter names Aslo: Update the parser tests to include ':' between parameter name and type. This functionality landed a few changes up, but I missed this test from the change. Bug: tint:832 Change-Id: If0d6d3a33bbcd8be4d70ee7182754158ed0da819 Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/52641 Commit-Queue: Ben Clayton <bclayton@google.com> Reviewed-by: David Neto <dneto@google.com>
This commit is contained in:
parent
39c05a902f
commit
126adb1bbb
|
@ -96,7 +96,7 @@ func TestParser(t *testing.T) {
|
||||||
},
|
},
|
||||||
}},
|
}},
|
||||||
}},
|
}},
|
||||||
{"fn F(a T)", ast.AST{
|
{"fn F(a: T)", ast.AST{
|
||||||
Functions: []ast.FunctionDecl{{
|
Functions: []ast.FunctionDecl{{
|
||||||
Name: "F",
|
Name: "F",
|
||||||
Parameters: ast.Parameters{
|
Parameters: ast.Parameters{
|
||||||
|
@ -128,7 +128,7 @@ func TestParser(t *testing.T) {
|
||||||
},
|
},
|
||||||
}},
|
}},
|
||||||
}},
|
}},
|
||||||
{"fn F<T>(a X, b Y<T>)", ast.AST{
|
{"fn F<T>(a: X, b: Y<T>)", ast.AST{
|
||||||
Functions: []ast.FunctionDecl{{
|
Functions: []ast.FunctionDecl{{
|
||||||
Name: "F",
|
Name: "F",
|
||||||
TemplateParams: ast.TemplateParams{
|
TemplateParams: ast.TemplateParams{
|
||||||
|
|
|
@ -16,6 +16,7 @@ package resolver
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"sort"
|
||||||
|
|
||||||
"dawn.googlesource.com/tint/tools/src/cmd/intrinsic-gen/ast"
|
"dawn.googlesource.com/tint/tools/src/cmd/intrinsic-gen/ast"
|
||||||
"dawn.googlesource.com/tint/tools/src/cmd/intrinsic-gen/sem"
|
"dawn.googlesource.com/tint/tools/src/cmd/intrinsic-gen/sem"
|
||||||
|
@ -65,6 +66,9 @@ func Resolve(a *ast.AST) (*sem.Sem, error) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Calculate the unique parameter names
|
||||||
|
r.s.UniqueParameterNames = r.calculateUniqueParameterNames()
|
||||||
|
|
||||||
return r.s, nil
|
return r.s, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -444,6 +448,25 @@ func (r *resolver) lookupNamed(s *scope, a ast.TemplatedName) (sem.Named, error)
|
||||||
return ty, nil
|
return ty, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// calculateUniqueParameterNames() iterates over all the parameters of all
|
||||||
|
// overloads, calculating the list of unique parameter names
|
||||||
|
func (r *resolver) calculateUniqueParameterNames() []string {
|
||||||
|
set := map[string]struct{}{"": {}}
|
||||||
|
names := []string{}
|
||||||
|
for _, f := range r.s.Functions {
|
||||||
|
for _, o := range f.Overloads {
|
||||||
|
for _, p := range o.Parameters {
|
||||||
|
if _, dup := set[p.Name]; !dup {
|
||||||
|
set[p.Name] = struct{}{}
|
||||||
|
names = append(names, p.Name)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sort.Strings(names)
|
||||||
|
return names
|
||||||
|
}
|
||||||
|
|
||||||
// describe() returns a string describing a sem.Named
|
// describe() returns a string describing a sem.Named
|
||||||
func describe(n sem.Named) string {
|
func describe(n sem.Named) string {
|
||||||
switch n := n.(type) {
|
switch n := n.(type) {
|
||||||
|
|
|
@ -29,6 +29,8 @@ type Sem struct {
|
||||||
MaxOpenTypes int
|
MaxOpenTypes int
|
||||||
// Maximum number of open-numbers used across all intrinsics
|
// Maximum number of open-numbers used across all intrinsics
|
||||||
MaxOpenNumbers int
|
MaxOpenNumbers int
|
||||||
|
// The alphabetically sorted list of unique parameter names
|
||||||
|
UniqueParameterNames []string
|
||||||
}
|
}
|
||||||
|
|
||||||
// New returns a new Sem
|
// New returns a new Sem
|
||||||
|
|
Loading…
Reference in New Issue