package st.gravel.support.compiler.ast;
/*
This file is automatically generated from typed smalltalk source. Do not edit by hand.
(C) AG5.com
*/
import java.math.BigInteger;
import st.gravel.support.jvm.NonLocalReturn;
import st.gravel.support.compiler.ast.NonLocalTempAccessToHolderConverter;
import st.gravel.support.compiler.ast.NonLocalTempAccessToHolderConverter.NonLocalTempAccessToHolderConverter_Factory;
import st.gravel.support.compiler.ast.VariableScopeAnalyzerState;
import java.util.HashMap;
public class NonLocalTempWritesToHolderConverter extends NonLocalTempAccessToHolderConverter implements Cloneable {
public static NonLocalTempWritesToHolderConverter_Factory factory = new NonLocalTempWritesToHolderConverter_Factory();
public static class NonLocalTempWritesToHolderConverter_Factory extends NonLocalTempAccessToHolderConverter_Factory {
public NonLocalTempWritesToHolderConverter basicNew() {
NonLocalTempWritesToHolderConverter newInstance = new NonLocalTempWritesToHolderConverter();
newInstance.initialize();
return newInstance;
}
@Override
public NonLocalTempWritesToHolderConverter parent_(final NonLocalTempAccessToHolderConverter _aVariableScopeAnalyzer) {
return ((NonLocalTempWritesToHolderConverter) this.basicNew().initializeParent_(_aVariableScopeAnalyzer));
}
}
static public NonLocalTempWritesToHolderConverter _parent_(Object receiver, final NonLocalTempAccessToHolderConverter _aVariableScopeAnalyzer) {
return factory.parent_(_aVariableScopeAnalyzer);
}
@Override
public NonLocalTempWritesToHolderConverter addBlockVariableRead_(final String _aString) {
if (!_temps.containsKey(_aString)) {
if (_parent == null) {
return NonLocalTempWritesToHolderConverter.this;
}
_parent.addBlockVariableRead_(_aString);
return NonLocalTempWritesToHolderConverter.this;
}
_temps.put(_aString, _temps.get(_aString).withBlockRead());
return this;
}
@Override
public NonLocalTempWritesToHolderConverter addBlockVariableWrite_(final String _aString) {
if (!_temps.containsKey(_aString)) {
if (_parent == null) {
return NonLocalTempWritesToHolderConverter.this;
}
_parent.addBlockVariableWrite_(_aString);
return NonLocalTempWritesToHolderConverter.this;
}
_temps.put(_aString, _temps.get(_aString).withBlockWrite());
return this;
}
@Override
public NonLocalTempWritesToHolderConverter addVariableRead_(final String _aString) {
if (!_temps.containsKey(_aString)) {
if (_parent == null) {
return NonLocalTempWritesToHolderConverter.this;
}
_parent.addBlockVariableRead_(_aString);
return NonLocalTempWritesToHolderConverter.this;
}
_temps.put(_aString, _temps.get(_aString).withLocalRead());
return this;
}
@Override
public NonLocalTempWritesToHolderConverter addVariableWrite_(final String _aString) {
if (!_temps.containsKey(_aString)) {
if (_parent == null) {
return NonLocalTempWritesToHolderConverter.this;
}
_parent.addBlockVariableWrite_(_aString);
return NonLocalTempWritesToHolderConverter.this;
}
_temps.put(_aString, _temps.get(_aString).withLocalWrite());
return this;
}
public NonLocalTempWritesToHolderConverter copy() {
try {
NonLocalTempWritesToHolderConverter _temp1 = (NonLocalTempWritesToHolderConverter) this.clone();
_temp1.postCopy();
return _temp1;
} catch (CloneNotSupportedException e) {
throw new RuntimeException(e);
}
}
public NonLocalTempWritesToHolderConverter_Factory factory() {
return factory;
}
@Override
public NonLocalTempWritesToHolderConverter initialize() {
super.initialize();
_temps = new java.util.HashMap<String, VariableScopeAnalyzerState>();
return this;
}
@Override
public NonLocalTempWritesToHolderConverter initializeParent_(final NonLocalTempAccessToHolderConverter _aVariableScopeAnalyzer) {
_parent = _aVariableScopeAnalyzer;
this.initialize();
return this;
}
@Override
public boolean needsRewrite_(final VariableScopeAnalyzerState _state) {
return _state.isUndecided();
}
}