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 NonLocalTempReadWritesToHolderConverter extends NonLocalTempAccessToHolderConverter implements Cloneable { public static NonLocalTempReadWritesToHolderConverter_Factory factory = new NonLocalTempReadWritesToHolderConverter_Factory(); public static class NonLocalTempReadWritesToHolderConverter_Factory extends NonLocalTempAccessToHolderConverter_Factory { public NonLocalTempReadWritesToHolderConverter basicNew() { NonLocalTempReadWritesToHolderConverter newInstance = new NonLocalTempReadWritesToHolderConverter(); newInstance.initialize(); return newInstance; } @Override public NonLocalTempReadWritesToHolderConverter parent_(final NonLocalTempAccessToHolderConverter _aVariableScopeAnalyzer) { return ((NonLocalTempReadWritesToHolderConverter) this.basicNew().initializeParent_(_aVariableScopeAnalyzer)); } } static public NonLocalTempReadWritesToHolderConverter _parent_(Object receiver, final NonLocalTempAccessToHolderConverter _aVariableScopeAnalyzer) { return factory.parent_(_aVariableScopeAnalyzer); } @Override public NonLocalTempReadWritesToHolderConverter addBlockVariableRead_(final String _aString) { if (!_temps.containsKey(_aString)) { if (_parent == null) { return NonLocalTempReadWritesToHolderConverter.this; } _parent.addBlockVariableRead_(_aString); return NonLocalTempReadWritesToHolderConverter.this; } _temps.put(_aString, _temps.get(_aString).withBlockRead()); return this; } @Override public NonLocalTempReadWritesToHolderConverter addBlockVariableWrite_(final String _aString) { if (!_temps.containsKey(_aString)) { if (_parent == null) { return NonLocalTempReadWritesToHolderConverter.this; } _parent.addBlockVariableWrite_(_aString); return NonLocalTempReadWritesToHolderConverter.this; } _temps.put(_aString, _temps.get(_aString).withBlockWrite()); return this; } @Override public NonLocalTempReadWritesToHolderConverter addVariableRead_(final String _aString) { if (!_temps.containsKey(_aString)) { if (_parent == null) { return NonLocalTempReadWritesToHolderConverter.this; } _parent.addBlockVariableRead_(_aString); return NonLocalTempReadWritesToHolderConverter.this; } _temps.put(_aString, _temps.get(_aString).withLocalRead()); return this; } @Override public NonLocalTempReadWritesToHolderConverter addVariableWrite_(final String _aString) { if (!_temps.containsKey(_aString)) { if (_parent == null) { return NonLocalTempReadWritesToHolderConverter.this; } _parent.addBlockVariableWrite_(_aString); return NonLocalTempReadWritesToHolderConverter.this; } _temps.put(_aString, _temps.get(_aString).withLocalWrite()); return this; } public NonLocalTempReadWritesToHolderConverter copy() { try { NonLocalTempReadWritesToHolderConverter _temp1 = (NonLocalTempReadWritesToHolderConverter) this.clone(); _temp1.postCopy(); return _temp1; } catch (CloneNotSupportedException e) { throw new RuntimeException(e); } } public NonLocalTempReadWritesToHolderConverter_Factory factory() { return factory; } @Override public NonLocalTempReadWritesToHolderConverter initialize() { super.initialize(); _temps = new java.util.HashMap<String, VariableScopeAnalyzerState>(); return this; } @Override public NonLocalTempReadWritesToHolderConverter initializeParent_(final NonLocalTempAccessToHolderConverter _aVariableScopeAnalyzer) { _parent = _aVariableScopeAnalyzer; this.initialize(); return this; } @Override public boolean needsRewrite_(final VariableScopeAnalyzerState _state) { return _state.isUndecided() || _state.isBlockReadAfterWritten(); } }