Python: вызов main() добавляется только если ф-ция объявлена
Этот коммит содержится в:
родитель
37c9ded2b0
коммит
3fe7d47388
2 изменённых файлов: 22 добавлений и 9 удалений
|
@ -30,6 +30,7 @@ type defaultService struct {
|
|||
}
|
||||
|
||||
var ind int
|
||||
var main_func_declared bool
|
||||
|
||||
// NewService creates a a new transpile and returns its address.
|
||||
func NewService(in io.Reader, out io.Writer) Service {
|
||||
|
@ -48,6 +49,7 @@ func (s *defaultService) Start() error {
|
|||
return fmt.Errorf("Error: %s", ErrorWorkerWriterIsNil)
|
||||
}
|
||||
ind = 0
|
||||
main_func_declared = false
|
||||
// Read tokens from file by using Go's parser.
|
||||
fset := token.NewFileSet()
|
||||
file, err := parser.ParseFile(fset, "source.go", s.in, parser.ParseComments)
|
||||
|
@ -88,7 +90,9 @@ func (s *defaultService) Start() error {
|
|||
}
|
||||
}
|
||||
|
||||
s.out.Write([]byte("main()\n"))
|
||||
if main_func_declared {
|
||||
s.out.Write([]byte("main()\n"))
|
||||
}
|
||||
|
||||
// Print the AST.
|
||||
// ast.Fprint(os.Stderr, fset, file, nil)
|
||||
|
@ -293,8 +297,8 @@ func handleFuncDecl(decl ast.Decl) string {
|
|||
code += "def "
|
||||
name := ""
|
||||
name = handleFuncDeclName(fd.Name)
|
||||
if name == "NewController" {
|
||||
return ""
|
||||
if name == "main" {
|
||||
main_func_declared = true
|
||||
}
|
||||
code += name
|
||||
code += "("
|
||||
|
|
|
@ -32,7 +32,6 @@ var _ = Describe("Go Translator to Python/Skidl", func() {
|
|||
`
|
||||
expected := `from skidl import *
|
||||
|
||||
main()
|
||||
`
|
||||
Compare(source, expected)
|
||||
})
|
||||
|
@ -47,7 +46,6 @@ main()
|
|||
expected := `from skidl import *
|
||||
from FreeCAD import *
|
||||
|
||||
main()
|
||||
`
|
||||
Compare(source, expected)
|
||||
})
|
||||
|
@ -62,7 +60,6 @@ main()
|
|||
expected := `import skidl
|
||||
import FreeCAD
|
||||
|
||||
main()
|
||||
`
|
||||
Compare(source, expected)
|
||||
})
|
||||
|
@ -75,7 +72,6 @@ main()
|
|||
`
|
||||
expected := `import cadquery as cq
|
||||
|
||||
main()
|
||||
`
|
||||
Compare(source, expected)
|
||||
})
|
||||
|
@ -102,7 +98,6 @@ d = a + b + c / 2
|
|||
t = True
|
||||
f = False
|
||||
|
||||
main()
|
||||
`
|
||||
Compare(source, expected)
|
||||
})
|
||||
|
@ -197,6 +192,20 @@ main()
|
|||
})
|
||||
|
||||
It("Function Declaration", func() {
|
||||
source := `package test
|
||||
import . "skidl"
|
||||
|
||||
func myfunc() {}
|
||||
`
|
||||
expected := `from skidl import *
|
||||
|
||||
def myfunc():
|
||||
None
|
||||
`
|
||||
Compare(source, expected)
|
||||
})
|
||||
|
||||
It("Function Declaration: main adds main call", func() {
|
||||
source := `package test
|
||||
import . "skidl"
|
||||
|
||||
|
@ -228,7 +237,7 @@ main()
|
|||
Compare(source, expected)
|
||||
})
|
||||
|
||||
FIt("Sequence func call", func() {
|
||||
It("Sequence func call", func() {
|
||||
source := `package test
|
||||
import . "skidl"
|
||||
|
||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче