Сценарий: Структура с вызовом метода другого объекта
Этот коммит содержится в:
родитель
b1694abd29
коммит
04c61b67a1
3 изменённых файлов: 33 добавлений и 5 удалений
|
@ -109,9 +109,7 @@ func handleParenExpr(stmt *ast.ParenExpr) string {
|
||||||
return code
|
return code
|
||||||
}
|
}
|
||||||
|
|
||||||
func handleSelectorExpr(expr ast.Expr) string {
|
func handleSelectorExpr(s *ast.SelectorExpr) (code string) {
|
||||||
s := expr.(*ast.SelectorExpr)
|
|
||||||
code := ""
|
|
||||||
switch x := s.X.(type) {
|
switch x := s.X.(type) {
|
||||||
case *ast.Ident:
|
case *ast.Ident:
|
||||||
if isInMethod {
|
if isInMethod {
|
||||||
|
@ -125,12 +123,17 @@ func handleSelectorExpr(expr ast.Expr) string {
|
||||||
code += handleIdentExpr(x)
|
code += handleIdentExpr(x)
|
||||||
code += "."
|
code += "."
|
||||||
}
|
}
|
||||||
|
case *ast.SelectorExpr:
|
||||||
|
code += "this"
|
||||||
|
code += "->"
|
||||||
|
code += handleIdentExpr(x.Sel)
|
||||||
|
code += "->"
|
||||||
}
|
}
|
||||||
code += handleIdentExpr(s.Sel)
|
code += handleIdentExpr(s.Sel)
|
||||||
if val, ok := mapping[code]; ok {
|
if val, ok := mapping[code]; ok {
|
||||||
code = val
|
code = val
|
||||||
}
|
}
|
||||||
return code
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func handleStarExpr(s *ast.StarExpr) (code string) {
|
func handleStarExpr(s *ast.StarExpr) (code string) {
|
||||||
|
|
|
@ -131,6 +131,31 @@ this->doSomethingElse();
|
||||||
}
|
}
|
||||||
void device::doSomethingElse() {
|
void device::doSomethingElse() {
|
||||||
}
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Сценарий: Структура с вызовом метода другого объекта
|
||||||
|
* Исходник:
|
||||||
|
```
|
||||||
|
package test
|
||||||
|
|
||||||
|
type device struct {
|
||||||
|
remote Other
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *device) doSomething() {
|
||||||
|
d.remote.doSomethingElse()
|
||||||
|
}
|
||||||
|
```
|
||||||
|
* Результат:
|
||||||
|
```
|
||||||
|
class device {
|
||||||
|
public:
|
||||||
|
Other remote;
|
||||||
|
void doSomething();
|
||||||
|
};
|
||||||
|
void device::doSomething() {
|
||||||
|
this->remote->doSomethingElse();
|
||||||
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
Сценарий: Структура с вызовом методов со входящими и выходящими параметрами
|
Сценарий: Структура с вызовом методов со входящими и выходящими параметрами
|
||||||
|
|
|
@ -87,7 +87,7 @@ func handleValueSpecValues(values []ast.Expr) string {
|
||||||
case *ast.BinaryExpr:
|
case *ast.BinaryExpr:
|
||||||
code += handleBinaryExpr(v)
|
code += handleBinaryExpr(v)
|
||||||
case *ast.SelectorExpr:
|
case *ast.SelectorExpr:
|
||||||
code += handleSelectorExpr(value)
|
code += handleSelectorExpr(v)
|
||||||
case *ast.CallExpr:
|
case *ast.CallExpr:
|
||||||
code += handleCallExpr(v)
|
code += handleCallExpr(v)
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче