Compare commits

..

No commits in common. "5641220986f584fbbdcf26793b64e789fcd02453" and "f5ad652d6822876263f8f4dbe1a6f1dbe3fd035c" have entirely different histories.

4 changed files with 13 additions and 50 deletions

View File

@ -131,8 +131,6 @@ func (analyzer *analysisOperation) fetchSection (
section, err = analyzer.analyzeDataSection()
if err != nil { return}
case parser.FuncSection:
section, err = analyzer.analyzeFuncSection()
if err != nil { return}
}
return

View File

@ -1,5 +1,6 @@
package analyzer
import "git.tebibyte.media/arf/arf/types"
import "git.tebibyte.media/arf/arf/parser"
import "git.tebibyte.media/arf/arf/infoerr"
@ -36,7 +37,16 @@ func (analyzer analysisOperation) analyzeDataSection () (
analyzer.addSection(section)
inputSection := analyzer.currentSection.(parser.DataSection)
outputSection.location = analyzer.currentSection.Location()
outputSection.location = analyzer.currentSection.Location()
if inputSection.Permission() == types.PermissionReadWrite {
err = inputSection.NewError (
"read-write (rw) permission not understood in this " +
"context, try read-only (ro)",
infoerr.ErrorKindError)
return
}
outputSection.permission = inputSection.Permission()
// get inherited type

View File

@ -1,60 +1,14 @@
package analyzer
import "git.tebibyte.media/arf/arf/types"
import "git.tebibyte.media/arf/arf/parser"
import "git.tebibyte.media/arf/arf/infoerr"
// FuncSection represents a type definition section.
type FuncSection struct {
sectionBase
external bool
}
// ToString returns all data stored within the function section, in string form.
func (section FuncSection) ToString (indent int) (output string) {
output += doIndent(indent, "funcSection ")
output += section.permission.ToString() + " "
output += section.where.ToString()
output += "\n"
// TODO: arguments
// TODO: root block
return
}
// analyzeFuncSection analyzes a function section.
func (analyzer *analysisOperation) analyzeFuncSection () (
section Section,
err error,
) {
outputSection := FuncSection { }
outputSection.where = analyzer.currentPosition
section = &outputSection
analyzer.addSection(section)
inputSection := analyzer.currentSection.(parser.FuncSection)
outputSection.location = analyzer.currentSection.Location()
// TODO: do not do this if it is a method
if inputSection.Permission() == types.PermissionReadWrite {
err = inputSection.NewError (
"read-write (rw) permission not understood in this " +
"context, try read-only (ro)",
infoerr.ErrorKindError)
return
}
outputSection.permission = inputSection.Permission()
// TODO: analyze inputs and outputs and reciever
if inputSection.External() {
outputSection.external = true
} else {
// TODO: analyze root block if not nil
}
return
}

View File

@ -4,7 +4,8 @@ import "testing"
func TestFuncSection (test *testing.T) {
checkTree ("../tests/analyzer/funcSection", false,
`typeSection ro ../tests/analyzer/funcSection.aCString
`
typeSection ro ../tests/analyzer/funcSection.aCString
type 1 pointer {
type 1 basic U8
}