package com.google.dart.engine.services.completion;
import com.google.dart.engine.ast.AstNode;
import com.google.dart.engine.element.ParameterElement;
/**
* @coverage com.google.dart.engine.services.completion
*/
class CompletionState {
boolean isForMixin;
boolean isVoidAllowed;
boolean isDynamicAllowed;
boolean isSourceDeclarationStatic;
boolean isThisAllowed = true;
boolean isVarAllowed;
boolean areLiteralsAllowed;
boolean areLiteralsProhibited;
boolean areOperatorsAllowed;
boolean areStaticReferencesProhibited;
boolean areInstanceReferencesProhibited;
boolean areUndefinedTypesProhibited;
boolean isCompileTimeConstantRequired;
boolean isOptionalArgumentRequired;
boolean areMethodsProhibited;
boolean areClassesRequired;
ParameterElement targetParameter;
public void mustBeInstantiableType() {
areClassesRequired = true;
prohibitsLiterals();
}
void includesLiterals() {
if (!areLiteralsProhibited) {
areLiteralsAllowed = true;
}
}
void includesOperators() {
areOperatorsAllowed = true;
}
void includesUndefinedDeclarationTypes() {
if (!areUndefinedTypesProhibited) {
isVoidAllowed = true;
isDynamicAllowed = true;
}
}
void includesUndefinedTypes() {
isVarAllowed = true;
isDynamicAllowed = true;
}
void mustBeMixin() {
isForMixin = true;
}
void prohibitsInstanceReferences() {
areInstanceReferencesProhibited = true;
}
void prohibitsLiterals() {
areLiteralsAllowed = false;
areLiteralsProhibited = true;
}
void prohibitsStaticReferences() {
areStaticReferencesProhibited = true;
}
void prohibitThis() {
isThisAllowed = false;
}
void prohibitsUndefinedTypes() {
areUndefinedTypesProhibited = true;
}
void requiresConst(boolean isConst) {
isCompileTimeConstantRequired = isConst;
}
void requiresOperators() {
includesOperators();
areMethodsProhibited = true;
}
void requiresOptionalArgument() {
isOptionalArgumentRequired = true;
prohibitsLiterals();
}
void setContext(AstNode base) {
base.accept(new ContextAnalyzer(this, base));
}
void sourceDeclarationIsStatic(boolean state) {
isSourceDeclarationStatic = state;
if (state) {
if (!areStaticReferencesProhibited) {
prohibitsInstanceReferences();
}
}
}
}