Сценарий: Вызов вложенных методов динамически созданного объекта

Этот коммит содержится в:
Softonik 2024-02-14 15:47:33 +03:00 коммит произвёл Nobody
родитель 9b117e1676
коммит dec79ad2f3
2 изменённых файлов: 42 добавлений и 11 удалений

Просмотреть файл

@ -105,21 +105,14 @@ func handleSelectorExpr(s *ast.SelectorExpr) (code string) {
switch x := s.X.(type) {
case *ast.Ident:
if isInMethod {
if x.Name == currentReceiverName {
code += "this"
} else {
code += handleIdentExpr(x)
}
code += "->"
if isInMethod && x.Name == currentReceiverName {
code += "this"
} else {
code += handleIdentExpr(x)
code += "->"
}
case *ast.SelectorExpr:
code += "this"
code += "->"
code += handleIdentExpr(x.Sel)
case *ast.SelectorExpr:
code += handleSelectorExpr(x)
code += "->"
}
code += handleIdentExpr(s.Sel)

Просмотреть файл

@ -260,6 +260,44 @@ public:
void device::doSomething() {
this->remote->doSomethingElse();
}
```
Сценарий: Вызов вложенных методов динамически созданного объекта
* Исходник:
```
package test
type device struct {
}
func (d *device) doSomething() {
n := NewOther()
n.G.x()
n.G.x.x2.x3()
}
func main() {
n := NewOther()
n.G.x()
n.G.x.x2.x3()
}
```
* Результат:
```
class device {
public:
void doSomething();
};
void main();
void device::doSomething() {
auto n=NewOther();
n->G->x();
n->G->x->x2->x3();
}
void main() {
auto n=NewOther();
n->G->x();
n->G->x->x2->x3();
}
```
Сценарий: Структура с вызовом методов со входящими и выходящими параметрами