21 lines
778 B
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
|
|
}
|