mirror of
https://github.com/aNNiMON/Own-Programming-Language-Tutorial.git
synced 2024-09-20 00:34:20 +03:00
Исправлен OptimizationVisitor при обходе присваиваний
This commit is contained in:
parent
0921d8cb17
commit
6d6db55055
@ -2,7 +2,7 @@ package com.annimon.ownlang.parser.ast;
|
||||
|
||||
import com.annimon.ownlang.lib.Value;
|
||||
|
||||
public interface Accessible {
|
||||
public interface Accessible extends Node {
|
||||
|
||||
Value get();
|
||||
|
||||
|
@ -29,9 +29,10 @@ public abstract class OptimizationVisitor<T> implements ResultVisitor<Node, T> {
|
||||
|
||||
@Override
|
||||
public Node visit(AssignmentExpression s, T t) {
|
||||
final Node node = s.expression.accept(this, t);
|
||||
if (node != s.expression) {
|
||||
return new AssignmentExpression(s.operation, s.target, (Expression) node);
|
||||
final Node exprNode = s.expression.accept(this, t);
|
||||
final Node targetNode = s.target.accept(this, t);
|
||||
if ( (exprNode != s.expression || targetNode != s.target) && (targetNode instanceof Accessible) ) {
|
||||
return new AssignmentExpression(s.operation, (Accessible) targetNode, (Expression) exprNode);
|
||||
}
|
||||
return s;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user