blob: 3950e8580a1e473e6452d372875c44345655afd4 [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.common.collect.ImmutableSet;
import com.google.dart.compiler.ast.DartExpression;
import com.google.dart.compiler.ast.LibraryUnit;
import com.google.dart.compiler.type.DynamicType;
import com.google.dart.compiler.type.FunctionType;
import com.google.dart.compiler.type.InterfaceType;
import com.google.dart.compiler.type.Type;
import com.google.dart.compiler.type.Types;
import java.util.Collections;
import java.util.List;
import java.util.Set;
/**
* Dummy element corresponding to {@link DynamicType}.
*/
class DynamicElementImplementation extends AbstractNodeElement implements DynamicElement, MethodNodeElement {
private DynamicElementImplementation() {
super(null, "dynamic");
}
@Override
public ElementKind getKind() {
return ElementKind.DYNAMIC;
}
public static DynamicElementImplementation getInstance() {
return new DynamicElementImplementation();
}
@Override
public void setType(InterfaceType type) {
throw new UnsupportedOperationException();
}
@Override
public List<Type> getTypeParameters() {
return Collections.<Type>emptyList();
}
@Override
public InterfaceType getSupertype() {
return null;
}
@Override
public InterfaceType getDefaultClass() {
return null;
}
@Override
public void setSupertype(InterfaceType element) {
throw new UnsupportedOperationException();
}
@Override
public List<Element> getMembers() {
return Collections.<Element>emptyList();
}
@Override
public List<ConstructorElement> getConstructors() {
return Collections.<ConstructorElement>emptyList();
}
@Override
public Scope getImportScope() {
return null;
}
@Override
public List<InterfaceType> getInterfaces() {
return Collections.<InterfaceType>emptyList();
}
@Override
public List<InterfaceType> getMixins() {
return Collections.<InterfaceType>emptyList();
}
@Override
public DynamicType getType() {
return Types.newDynamicType();
}
@Override
public DynamicType getTypeVariable() {
return getType();
}
@Override
public ClassElement getEnclosingElement() {
return this;
}
@Override
public boolean isConstructor() {
return false;
}
@Override
public boolean isSynthetic() {
return true;
}
@Override
public ConstructorElement getDefaultConstructor() {
throw new UnsupportedOperationException();
}
@Override
public ConstructorElement getRedirectingFactoryConstructor() {
throw new UnsupportedOperationException();
}
@Override
public void setDefaultConstructor(ConstructorElement defaultConstructor) {
throw new UnsupportedOperationException();
}
@Override
public boolean isStatic() {
return false;
}
@Override
public boolean hasBody() {
return false;
}
@Override
public boolean isInterface() {
return false;
}
@Override
public String getNativeName() {
return null;
}
@Override
public List<VariableElement> getParameters() {
return Collections.<VariableElement>emptyList();
}
@Override
public Type getReturnType() {
return getType();
}
@Override
public boolean isDynamic() {
return true;
}
@Override
public boolean isObject() {
return false;
}
@Override
public String getDeclarationNameWithTypeParameters() {
return "dynamic";
}
@Override
public boolean isObjectChild() {
return false;
}
@Override
public Element lookupLocalElement(String name) {
return this;
}
@Override
public LibraryElement getLibrary() {
return null;
}
@Override
public Type getBound() {
return getType();
}
@Override
public Element getDeclaringElement() {
return this;
}
@Override
public ConstructorElement lookupConstructor(String name) {
return null;
}
@Override
public FunctionType getFunctionType() {
return null;
}
@Override
public void setFunctionType(FunctionType functionType) {
}
@Override
public List<InterfaceType> getAllSupertypes() {
return Collections.emptyList();
}
@Override
public Scope getScope() {
return null;
}
@Override
public List<Element> getExportedElements() {
return null;
}
@Override
public LibraryUnit getLibraryUnit() {
return null;
}
@Override
public void setEntryPoint(MethodElement element) {
throw new AssertionError();
}
@Override
public MethodElement getEntryPoint() {
return null;
}
@Override
public MethodElement getGetter() {
return null;
}
@Override
public MethodElement getSetter() {
return null;
}
@Override
public MethodElement getEnclosingFunction() {
return this;
}
@Override
public ClassElement getClassElement() {
return this;
}
@Override
public FieldElement getParameterInitializerElement() {
return this;
}
@Override
public boolean isOptional() {
return false;
}
@Override
public boolean isNamed() {
return false;
}
@Override
public DartExpression getDefaultValue() {
return null;
}
@Override
public ClassElement getConstructorType() {
return this;
}
@Override
public String getRawName() {
return getName();
}
@Override
public void setType(Type type) {
super.setType(type);
}
@Override
public Type getConstantType() {
return null;
}
@Override
public List<Element> getUnimplementedMembers() {
return null;
}
@Override
public Set<Element> getOverridden() {
return ImmutableSet.of();
}
@Override
public LabeledStatementType getStatementType() {
return LabeledStatementType.STATEMENT;
}
@Override
public int getOpenBraceOffset() {
return -1;
}
@Override
public int getCloseBraceOffset() {
return -1;
}
@Override
public boolean hasSuperInvocation() {
return false;
}
}