Face test is now passed

This commit is contained in:
Sasha Koshka 2022-09-29 15:52:14 -04:00
parent 2ceb3f8174
commit 3e1acdc74a
3 changed files with 23 additions and 8 deletions

View File

@ -47,11 +47,13 @@ func (parser *ParsingOperation) parseFaceSection () (
if parser.token.Is(lexer.TokenKindName) {
// parse type interface
section.kind = FaceKindType
parser.previousToken()
section.behaviors, err = parser.parseFaceBehaviors()
if err != nil { return }
} else {
// parse function interface
section.kind = FaceKindFunc
parser.previousToken()
section.inputs,
section.outputs, err = parser.parseFaceBehaviorArguments(1)
@ -157,15 +159,16 @@ func (parser *ParsingOperation) parseFaceBehaviorArguments (
if err != nil { return }
declaration.what, err = parser.parseType()
if err != nil { return }
err = parser.expect(lexer.TokenKindNewline)
if err != nil { return }
err = parser.nextToken()
if err != nil { return }
if kind == lexer.TokenKindGreaterThan {
inputs = append(inputs, declaration)
} else {
outputs = append(outputs, declaration)
}
err = parser.expect(lexer.TokenKindNewline)
if err != nil { return }
err = parser.nextToken()
if err != nil { return }
}
}

View File

@ -250,10 +250,21 @@ func (section FaceSection) ToString (indent int) (output string) {
section.name, ":",
section.inherits.ToString(), "\n")
for _, name := range sortMapKeysAlphabetically(section.behaviors) {
behavior := section.behaviors[name]
output += behavior.ToString(indent + 1)
if section.kind == FaceKindType {
for _, name := range sortMapKeysAlphabetically(section.behaviors) {
behavior := section.behaviors[name]
output += behavior.ToString(indent + 1)
}
} else if section.kind == FaceKindFunc {
for _, inputItem := range section.inputs {
output += doIndent(indent + 1, "> ", inputItem.ToString(), "\n")
}
for _, outputItem := range section.outputs {
output += doIndent(indent + 1, "< ", outputItem.ToString(), "\n")
}
}
return
}

View File

@ -196,7 +196,8 @@ type EnumSection struct {
type FaceKind int
const (
FaceKindType FaceKind = iota
FaceKindEmpty FaceKind = iota
FaceKindType
FaceKindFunc
)