blob: f439eef6b76150fa99e1e3951fde3d5ed61650a9 [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.type;
import com.google.common.collect.Lists;
import com.google.dart.compiler.resolver.ClassElement;
import com.google.dart.compiler.resolver.DynamicElement;
import com.google.dart.compiler.resolver.Element;
import com.google.dart.compiler.resolver.Elements;
import java.util.Collections;
import java.util.List;
import java.util.Map;
/**
* Type of untyped expressions.
*/
class DynamicTypeImplementation extends AbstractType implements DynamicType {
@Override
public DynamicTypeImplementation subst(List<Type> arguments,
List<Type> parameters) {
return this;
}
@Override
public DynamicElement getElement() {
return Elements.dynamicElement();
}
@Override
public DynamicElement getTypeVariableElement() {
return getElement();
}
@Override
public String toString() {
return "dynamic";
}
@Override
public boolean equals(Object obj) {
return obj instanceof DynamicType;
}
@Override
public int hashCode() {
return DynamicType.class.hashCode();
}
@Override
public List<Type> getArguments() {
return Collections.<Type>emptyList();
}
@Override
public boolean isRaw() {
return false;
}
@Override
public boolean hasDynamicTypeArgs() {
return false;
}
@Override
public DynamicType asRawType() {
return this;
}
@Override
public TypeKind getKind() {
return TypeKind.DYNAMIC;
}
@Override
public Type getReturnType() {
return this;
}
@Override
public List<Type> getParameterTypes() {
return Collections.emptyList();
}
@Override
public Member lookupMember(String name) {
return new Member() {
@Override
public Type getGetterType() {
return DynamicTypeImplementation.this;
}
@Override
public Type getSetterType() {
return DynamicTypeImplementation.this;
}
@Override
public Type getType() {
return DynamicTypeImplementation.this;
}
@Override
public InterfaceType getHolder() {
return DynamicTypeImplementation.this;
}
@Override
public Element getElement() {
return Elements.dynamicElement();
}
};
}
@Override
public Type getRest() {
return null;
}
@Override
public boolean hasRest() {
return false;
}
@Override
public Map<String, Type> getOptionalParameterTypes() {
return null;
}
@Override
public Map<String, Type> getNamedParameterTypes() {
return null;
}
@Override
public void registerSubClass(ClassElement subClass) {
}
@Override
public void unregisterSubClass(ClassElement subClass) {
}
@Override
public List<Member> lookupSubTypeMembers(String name) {
return Lists.newArrayList();
}
}