blob: 74e8de119b3c9ca1d002cc156c6883981467e839 [file] [log] [blame]
/*
* Copyright 2008 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.google.gwt.dev.jjs.ast;
import com.google.gwt.dev.jjs.HasSourceInfo;
import com.google.gwt.dev.jjs.SourceInfo;
import com.google.gwt.dev.jjs.impl.SourceGenerationVisitor;
import com.google.gwt.dev.jjs.impl.ToStringGenerationVisitor;
import com.google.gwt.dev.util.DefaultTextOutput;
import java.io.Serializable;
/**
* Base class for all visitable AST nodes.
*/
public abstract class JNode implements JVisitable, HasSourceInfo, Serializable {
private SourceInfo info;
protected JNode(SourceInfo info) {
assert info != null : "SourceInfo must be provided for JNodes";
this.info = info;
}
public SourceInfo getSourceInfo() {
return info;
}
public void setSourceInfo(SourceInfo info) {
assert this.info.getOrigin() == info.getOrigin();
this.info = info;
}
// Causes source generation to delegate to the one visitor
public final String toSource() {
DefaultTextOutput out = new DefaultTextOutput(false);
SourceGenerationVisitor v = new SourceGenerationVisitor(out);
v.accept(this);
return out.toString();
}
// Causes source generation to delegate to the one visitor
@Override
public final String toString() {
DefaultTextOutput out = new DefaultTextOutput(false);
ToStringGenerationVisitor v = new ToStringGenerationVisitor(out);
v.accept(this);
return out.toString();
}
}