Добавлены типы функций в объявлениях и определениях
Этот коммит содержится в:
родитель
a46d19130e
коммит
f92c01d1a7
2 изменённых файлов: 32 добавлений и 9 удалений
|
@ -311,9 +311,6 @@ func handleFuncDecl(decl ast.Decl) string {
|
||||||
fp := handleFuncDeclParams(fd.Type)
|
fp := handleFuncDeclParams(fd.Type)
|
||||||
code += fp
|
code += fp
|
||||||
|
|
||||||
if ft == "" {
|
|
||||||
ft = "int"
|
|
||||||
}
|
|
||||||
addFunctionDeclaration(ft + " " + name + "(" + fp + ");")
|
addFunctionDeclaration(ft + " " + name + "(" + fp + ");")
|
||||||
|
|
||||||
code += ") {"
|
code += ") {"
|
||||||
|
@ -417,8 +414,19 @@ func handleFuncDeclName(ident *ast.Ident) string {
|
||||||
func handleFuncDeclType(t *ast.FuncType) string {
|
func handleFuncDeclType(t *ast.FuncType) string {
|
||||||
code := ""
|
code := ""
|
||||||
if t.Results == nil {
|
if t.Results == nil {
|
||||||
code = "void"
|
return "void"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fl := t.Results
|
||||||
|
if fl.NumFields() == 0 {
|
||||||
|
panic("handleFuncDeclType: fl.NumFields() == 0")
|
||||||
|
}
|
||||||
|
|
||||||
|
switch ft := fl.List[0].Type.(type) {
|
||||||
|
case *ast.Ident:
|
||||||
|
code += handleIdent(ft)
|
||||||
|
}
|
||||||
|
|
||||||
return code
|
return code
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -283,7 +283,7 @@ var _ = Describe("Go Translator", func() {
|
||||||
void foo() {
|
void foo() {
|
||||||
foo2();
|
foo2();
|
||||||
}
|
}
|
||||||
foo2() {
|
int foo2() {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
`
|
`
|
||||||
|
@ -708,7 +708,7 @@ var _ = Describe("Go Translator", func() {
|
||||||
void setup() {}
|
void setup() {}
|
||||||
void loop() {
|
void loop() {
|
||||||
}
|
}
|
||||||
MyFunction() {
|
int MyFunction() {
|
||||||
}
|
}
|
||||||
`
|
`
|
||||||
Compare(source, expected)
|
Compare(source, expected)
|
||||||
|
@ -731,7 +731,7 @@ var _ = Describe("Go Translator", func() {
|
||||||
void setup() {}
|
void setup() {}
|
||||||
void loop() {
|
void loop() {
|
||||||
}
|
}
|
||||||
MyFunction() {
|
int MyFunction() {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
`
|
`
|
||||||
|
@ -755,7 +755,7 @@ var _ = Describe("Go Translator", func() {
|
||||||
void setup() {}
|
void setup() {}
|
||||||
void loop() {
|
void loop() {
|
||||||
}
|
}
|
||||||
MyFunction() {
|
int MyFunction() {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
`
|
`
|
||||||
|
@ -781,12 +781,27 @@ var _ = Describe("Go Translator", func() {
|
||||||
void loop() {
|
void loop() {
|
||||||
int x = MyFunction();
|
int x = MyFunction();
|
||||||
}
|
}
|
||||||
MyFunction() {
|
int MyFunction() {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
`
|
`
|
||||||
Compare(source, expected)
|
Compare(source, expected)
|
||||||
})
|
})
|
||||||
|
It("Объявление bool функции с return false", func() {
|
||||||
|
source := `package test
|
||||||
|
func MyFunction() bool {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
`
|
||||||
|
expected := `
|
||||||
|
bool MyFunction();
|
||||||
|
|
||||||
|
bool MyFunction() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
`
|
||||||
|
Compare(source, expected)
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
Describe("Циклы", func() {
|
Describe("Циклы", func() {
|
||||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче