blob: 2c5a703d15f6f252112a9dbf3514fbb892f4ab12 [file] [log] [blame]
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
package com.google.dart.compiler.resolver;
import com.google.dart.compiler.ast.DartNode;
import com.google.dart.compiler.ast.DartObsoleteMetadata;
import com.google.dart.compiler.ast.Modifiers;
import com.google.dart.compiler.common.SourceInfo;
import com.google.dart.compiler.type.Type;
import com.google.dart.compiler.type.Types;
import com.google.dart.compiler.util.StringInterner;
abstract class AbstractNodeElement implements Element, NodeElement {
private final DartNode node;
private final String name;
private SourceInfo sourceInfo;
AbstractNodeElement(DartNode node, String name) {
// TODO(scheglov) in the future we will not use ASTNode and remove null check
this.sourceInfo = node != null ? node.getSourceInfo() : SourceInfo.UNKNOWN;
this.node = node;
this.name = StringInterner.intern(name);
}
@Override
public DartNode getNode() {
return node;
}
@Override
public String getName() {
return name;
}
@Override
public String getOriginalName() {
return name;
}
@Override
public abstract ElementKind getKind();
@Override
public final String toString() {
return getKind() + " " + getName();
}
@Override
public Type getType() {
return Types.newDynamicType();
}
void setType(Type type) {
throw new UnsupportedOperationException();
}
@Override
public boolean isDynamic() {
return false;
}
@Override
public DartObsoleteMetadata getMetadata() {
return DartObsoleteMetadata.EMPTY;
}
@Override
public Modifiers getModifiers() {
return Modifiers.NONE;
}
@Override
public EnclosingElement getEnclosingElement() {
return null;
}
@Override
public SourceInfo getNameLocation() {
return sourceInfo;
}
@Override
public final SourceInfo getSourceInfo() {
return sourceInfo;
}
}