Face test is now passed
This commit is contained in:
parent
2ceb3f8174
commit
3e1acdc74a
@ -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 }
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
|
||||
|
@ -196,7 +196,8 @@ type EnumSection struct {
|
||||
type FaceKind int
|
||||
|
||||
const (
|
||||
FaceKindType FaceKind = iota
|
||||
FaceKindEmpty FaceKind = iota
|
||||
FaceKindType
|
||||
FaceKindFunc
|
||||
)
|
||||
|
||||
|
Reference in New Issue
Block a user