fspl/analyzer/misc.go

21 lines
778 B
Go

package analyzer
import "git.tebibyte.media/fspl/fspl/errors"
import "git.tebibyte.media/fspl/fspl/entity"
func (this *Tree) assembleSignatureMap (signature *entity.Signature) (*entity.Signature, error) {
signature.ArgumentMap = make(map[string] *entity.Declaration)
signature.ArgumentOrder = make([]string, len(signature.Arguments))
for index, member := range signature.Arguments {
if previous, exists := signature.ArgumentMap[member.Name]; exists {
return signature, errors.Errorf (
member.Position(), "%s already listed as argument at %v",
member.Name, previous.Position())
}
signature.ArgumentMap [member.Name] = member
signature.ArgumentOrder[index] = member.Name
signature.Arguments [index] = member
}
return signature, nil
}