blob: 2c224d4ceabbc0d0bf44369e3c2710114f60c746 [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.js.ast;
import com.google.gwt.dev.jjs.SourceInfo;
import com.google.gwt.dev.util.StringInterner;
import java.io.Serializable;
/**
* An abstract base class for named JavaScript objects.
*/
public class JsName implements Serializable {
private final JsScope enclosing;
private final String ident;
private boolean isObfuscatable;
private String shortIdent;
/**
* A back-reference to the JsNode that the JsName refers to.
*/
private JsNode staticRef;
/**
* @param ident the unmangled ident to use for this name
*/
JsName(JsScope enclosing, String ident, String shortIdent) {
this.enclosing = enclosing;
this.ident = StringInterner.get().intern(ident);
this.shortIdent = StringInterner.get().intern(shortIdent);
this.isObfuscatable = true;
}
public JsScope getEnclosing() {
return enclosing;
}
public String getIdent() {
return ident;
}
public String getShortIdent() {
return shortIdent;
}
public JsNode getStaticRef() {
return staticRef;
}
public boolean isObfuscatable() {
return isObfuscatable;
}
public JsNameRef makeRef(SourceInfo sourceInfo) {
return new JsNameRef(sourceInfo, this);
}
public void setObfuscatable(boolean isObfuscatable) {
this.isObfuscatable = isObfuscatable;
}
public void setShortIdent(String shortIdent) {
this.shortIdent = StringInterner.get().intern(shortIdent);
}
/**
* Should never be called except on immutable stuff.
*/
public void setStaticRef(JsNode node) {
this.staticRef = node;
}
@Override
public String toString() {
return ident;
}
}