Сценарий: Инициализация переменной - тип string
Этот коммит содержится в:
родитель
bcfa576806
коммит
9fb0182784
2 изменённых файлов: 44 добавлений и 5 удалений
|
@ -103,4 +103,20 @@ void foo();
|
||||||
void foo() {
|
void foo() {
|
||||||
auto a=NewDevice(1,b,"stroka");
|
auto a=NewDevice(1,b,"stroka");
|
||||||
}
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Сценарий: Инициализация переменной - тип string
|
||||||
|
* Исходник:
|
||||||
|
```
|
||||||
|
package test
|
||||||
|
func foo() {
|
||||||
|
a := "stroka"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
* Результат:
|
||||||
|
```
|
||||||
|
void foo();
|
||||||
|
void foo() {
|
||||||
|
std::string a="stroka";
|
||||||
|
}
|
||||||
```
|
```
|
||||||
|
|
|
@ -61,18 +61,41 @@ func handleStmt(stmt ast.Stmt, standaloneAssignment bool) string {
|
||||||
return code
|
return code
|
||||||
}
|
}
|
||||||
|
|
||||||
func handleAssignStmt(as *ast.AssignStmt) (code string) {
|
func handleAssignStmt(a *ast.AssignStmt) (code string) {
|
||||||
tkn, new := handleToken(as.Tok)
|
// println()
|
||||||
|
// spew.Dump(a)
|
||||||
|
|
||||||
|
tkn, new := handleToken(a.Tok)
|
||||||
if new {
|
if new {
|
||||||
code += "auto "
|
t := "auto"
|
||||||
|
|
||||||
|
if isExpr0String(a.Rhs) {
|
||||||
|
t = "std::string"
|
||||||
}
|
}
|
||||||
|
|
||||||
code += handleAssignStmtExpr(as.Lhs)
|
code += t + " "
|
||||||
|
}
|
||||||
|
|
||||||
|
code += handleAssignStmtExpr(a.Lhs)
|
||||||
code += tkn
|
code += tkn
|
||||||
code += handleAssignStmtExpr(as.Rhs)
|
code += handleAssignStmtExpr(a.Rhs)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func isExpr0String(ee []ast.Expr) bool {
|
||||||
|
if len(ee) == 0 {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
e0 := ee[0]
|
||||||
|
|
||||||
|
switch e := e0.(type) {
|
||||||
|
case *ast.BasicLit:
|
||||||
|
return e.Kind == token.STRING
|
||||||
|
}
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
func handleAssignStmtExpr(e []ast.Expr) string {
|
func handleAssignStmtExpr(e []ast.Expr) string {
|
||||||
ops := make([]string, 0)
|
ops := make([]string, 0)
|
||||||
code := ""
|
code := ""
|
||||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче