void AddResult(Result R, DeclContext *CurContext, NamedDecl *Hiding,
bool InBaseClass);
+ /// \brief Add a new non-declaration result to this result set.
+ void AddResult(Result R);
+
/// \brief Enter into a new scope.
void EnterNewScope();
void ResultBuilder::AddResult(Result R, DeclContext *CurContext,
NamedDecl *Hiding, bool InBaseClass = false) {
- assert(R.Kind == Result::RK_Declaration &&
- "Only declaration results are supported");
-
+ if (R.Kind != Result::RK_Declaration) {
+ // For non-declaration results, just add the result.
+ Results.push_back(R);
+ return;
+ }
+
// Look through using declarations.
if (UsingShadowDecl *Using = dyn_cast<UsingShadowDecl>(R.Declaration)) {
AddResult(Result(Using->getTargetDecl(), R.Qualifier), CurContext, Hiding);
Results.push_back(R);
}
+void ResultBuilder::AddResult(Result R) {
+ assert(R.Kind != Result::RK_Declaration &&
+ "Declaration results need more context");
+ Results.push_back(R);
+}
+
/// \brief Enter into a new scope.
void ResultBuilder::EnterNewScope() {
ShadowMaps.push_back(ShadowMap());
static void AddTypeSpecifierResults(const LangOptions &LangOpts,
ResultBuilder &Results) {
typedef CodeCompleteConsumer::Result Result;
- Results.MaybeAddResult(Result("short"));
- Results.MaybeAddResult(Result("long"));
- Results.MaybeAddResult(Result("signed"));
- Results.MaybeAddResult(Result("unsigned"));
- Results.MaybeAddResult(Result("void"));
- Results.MaybeAddResult(Result("char"));
- Results.MaybeAddResult(Result("int"));
- Results.MaybeAddResult(Result("float"));
- Results.MaybeAddResult(Result("double"));
- Results.MaybeAddResult(Result("enum"));
- Results.MaybeAddResult(Result("struct"));
- Results.MaybeAddResult(Result("union"));
- Results.MaybeAddResult(Result("const"));
- Results.MaybeAddResult(Result("volatile"));
+ Results.AddResult(Result("short"));
+ Results.AddResult(Result("long"));
+ Results.AddResult(Result("signed"));
+ Results.AddResult(Result("unsigned"));
+ Results.AddResult(Result("void"));
+ Results.AddResult(Result("char"));
+ Results.AddResult(Result("int"));
+ Results.AddResult(Result("float"));
+ Results.AddResult(Result("double"));
+ Results.AddResult(Result("enum"));
+ Results.AddResult(Result("struct"));
+ Results.AddResult(Result("union"));
+ Results.AddResult(Result("const"));
+ Results.AddResult(Result("volatile"));
if (LangOpts.C99) {
// C99-specific
- Results.MaybeAddResult(Result("_Complex"));
- Results.MaybeAddResult(Result("_Imaginary"));
- Results.MaybeAddResult(Result("_Bool"));
- Results.MaybeAddResult(Result("restrict"));
+ Results.AddResult(Result("_Complex"));
+ Results.AddResult(Result("_Imaginary"));
+ Results.AddResult(Result("_Bool"));
+ Results.AddResult(Result("restrict"));
}
if (LangOpts.CPlusPlus) {
// C++-specific
- Results.MaybeAddResult(Result("bool"));
- Results.MaybeAddResult(Result("class"));
- Results.MaybeAddResult(Result("wchar_t"));
+ Results.AddResult(Result("bool"));
+ Results.AddResult(Result("class"));
+ Results.AddResult(Result("wchar_t"));
// typename qualified-id
CodeCompletionString *Pattern = new CodeCompletionString;
Pattern->AddTypedTextChunk("typename");
Pattern->AddChunk(CodeCompletionString::CK_HorizontalSpace);
Pattern->AddPlaceholderChunk("qualified-id");
- Results.MaybeAddResult(Result(Pattern));
+ Results.AddResult(Result(Pattern));
if (LangOpts.CPlusPlus0x) {
- Results.MaybeAddResult(Result("auto"));
- Results.MaybeAddResult(Result("char16_t"));
- Results.MaybeAddResult(Result("char32_t"));
- Results.MaybeAddResult(Result("decltype"));
+ Results.AddResult(Result("auto"));
+ Results.AddResult(Result("char16_t"));
+ Results.AddResult(Result("char32_t"));
+ Results.AddResult(Result("decltype"));
}
}
// GNU extensions
if (LangOpts.GNUMode) {
// FIXME: Enable when we actually support decimal floating point.
- // Results.MaybeAddResult(Result("_Decimal32"));
- // Results.MaybeAddResult(Result("_Decimal64"));
- // Results.MaybeAddResult(Result("_Decimal128"));
+ // Results.AddResult(Result("_Decimal32"));
+ // Results.AddResult(Result("_Decimal64"));
+ // Results.AddResult(Result("_Decimal128"));
CodeCompletionString *Pattern = new CodeCompletionString;
Pattern->AddTypedTextChunk("typeof");
Pattern->AddChunk(CodeCompletionString::CK_LeftParen);
Pattern->AddPlaceholderChunk("expression-or-type");
Pattern->AddChunk(CodeCompletionString::CK_RightParen);
- Results.MaybeAddResult(Result(Pattern));
+ Results.AddResult(Result(Pattern));
}
}
// Note: we don't suggest either "auto" or "register", because both
// are pointless as storage specifiers. Elsewhere, we suggest "auto"
// in C++0x as a type specifier.
- Results.MaybeAddResult(Result("extern"));
- Results.MaybeAddResult(Result("static"));
+ Results.AddResult(Result("extern"));
+ Results.AddResult(Result("static"));
}
static void AddFunctionSpecifiers(Action::CodeCompletionContext CCC,
case Action::CCC_Class:
case Action::CCC_MemberTemplate:
if (LangOpts.CPlusPlus) {
- Results.MaybeAddResult(Result("explicit"));
- Results.MaybeAddResult(Result("friend"));
- Results.MaybeAddResult(Result("mutable"));
- Results.MaybeAddResult(Result("virtual"));
+ Results.AddResult(Result("explicit"));
+ Results.AddResult(Result("friend"));
+ Results.AddResult(Result("mutable"));
+ Results.AddResult(Result("virtual"));
}
// Fall through
case Action::CCC_Namespace:
case Action::CCC_Template:
if (LangOpts.CPlusPlus || LangOpts.C99)
- Results.MaybeAddResult(Result("inline"));
+ Results.AddResult(Result("inline"));
break;
case Action::CCC_ObjCInstanceVariableList:
Pattern->AddPlaceholderChunk("declarations");
Pattern->AddChunk(CodeCompletionString::CK_VerticalSpace);
Pattern->AddChunk(CodeCompletionString::CK_RightBrace);
- Results.MaybeAddResult(Result(Pattern));
+ Results.AddResult(Result(Pattern));
// namespace identifier = identifier ;
Pattern = new CodeCompletionString;
Pattern->AddChunk(CodeCompletionString::CK_Equal);
Pattern->AddPlaceholderChunk("identifier");
Pattern->AddChunk(CodeCompletionString::CK_SemiColon);
- Results.MaybeAddResult(Result(Pattern));
+ Results.AddResult(Result(Pattern));
// Using directives
Pattern = new CodeCompletionString;
Pattern->AddChunk(CodeCompletionString::CK_HorizontalSpace);
Pattern->AddPlaceholderChunk("identifier");
Pattern->AddChunk(CodeCompletionString::CK_SemiColon);
- Results.MaybeAddResult(Result(Pattern));
+ Results.AddResult(Result(Pattern));
// asm(string-literal)
Pattern = new CodeCompletionString;
Pattern->AddPlaceholderChunk("string-literal");
Pattern->AddChunk(CodeCompletionString::CK_RightParen);
Pattern->AddChunk(CodeCompletionString::CK_SemiColon);
- Results.MaybeAddResult(Result(Pattern));
+ Results.AddResult(Result(Pattern));
// Explicit template instantiation
Pattern = new CodeCompletionString;
Pattern->AddChunk(CodeCompletionString::CK_HorizontalSpace);
Pattern->AddPlaceholderChunk("declaration");
Pattern->AddChunk(CodeCompletionString::CK_SemiColon);
- Results.MaybeAddResult(Result(Pattern));
+ Results.AddResult(Result(Pattern));
}
if (SemaRef.getLangOptions().ObjC1)
// Fall through
case Action::CCC_Class:
- Results.MaybeAddResult(Result("typedef"));
+ Results.AddResult(Result("typedef"));
if (SemaRef.getLangOptions().CPlusPlus) {
// Using declaration
CodeCompletionString *Pattern = new CodeCompletionString;
Pattern->AddChunk(CodeCompletionString::CK_HorizontalSpace);
Pattern->AddPlaceholderChunk("qualified-id");
Pattern->AddChunk(CodeCompletionString::CK_SemiColon);
- Results.MaybeAddResult(Result(Pattern));
+ Results.AddResult(Result(Pattern));
// using typename qualified-id; (only in a dependent context)
if (SemaRef.CurContext->isDependentContext()) {
Pattern->AddChunk(CodeCompletionString::CK_HorizontalSpace);
Pattern->AddPlaceholderChunk("qualified-id");
Pattern->AddChunk(CodeCompletionString::CK_SemiColon);
- Results.MaybeAddResult(Result(Pattern));
+ Results.AddResult(Result(Pattern));
}
if (CCC == Action::CCC_Class) {
Pattern = new CodeCompletionString;
Pattern->AddTypedTextChunk("public");
Pattern->AddChunk(CodeCompletionString::CK_Colon);
- Results.MaybeAddResult(Result(Pattern));
+ Results.AddResult(Result(Pattern));
// protected:
Pattern = new CodeCompletionString;
Pattern->AddTypedTextChunk("protected");
Pattern->AddChunk(CodeCompletionString::CK_Colon);
- Results.MaybeAddResult(Result(Pattern));
+ Results.AddResult(Result(Pattern));
// private:
Pattern = new CodeCompletionString;
Pattern->AddTypedTextChunk("private");
Pattern->AddChunk(CodeCompletionString::CK_Colon);
- Results.MaybeAddResult(Result(Pattern));
+ Results.AddResult(Result(Pattern));
}
}
// Fall through
Pattern->AddChunk(CodeCompletionString::CK_LeftAngle);
Pattern->AddPlaceholderChunk("parameters");
Pattern->AddChunk(CodeCompletionString::CK_RightAngle);
- Results.MaybeAddResult(Result(Pattern));
+ Results.AddResult(Result(Pattern));
}
AddStorageSpecifiers(CCC, SemaRef.getLangOptions(), Results);
break;
case Action::CCC_Statement: {
- Results.MaybeAddResult(Result("typedef"));
+ Results.AddResult(Result("typedef"));
CodeCompletionString *Pattern = 0;
if (SemaRef.getLangOptions().CPlusPlus) {
Pattern->AddPlaceholderChunk("statements");
Pattern->AddChunk(CodeCompletionString::CK_VerticalSpace);
Pattern->AddChunk(CodeCompletionString::CK_RightBrace);
- Results.MaybeAddResult(Result(Pattern));
+ Results.AddResult(Result(Pattern));
}
if (SemaRef.getLangOptions().ObjC1)
AddObjCStatementResults(Results, true);
Pattern->AddPlaceholderChunk("statements");
Pattern->AddChunk(CodeCompletionString::CK_VerticalSpace);
Pattern->AddChunk(CodeCompletionString::CK_RightBrace);
- Results.MaybeAddResult(Result(Pattern));
+ Results.AddResult(Result(Pattern));
// switch (condition) { }
Pattern = new CodeCompletionString;
Pattern->AddChunk(CodeCompletionString::CK_LeftBrace);
Pattern->AddChunk(CodeCompletionString::CK_VerticalSpace);
Pattern->AddChunk(CodeCompletionString::CK_RightBrace);
- Results.MaybeAddResult(Result(Pattern));
+ Results.AddResult(Result(Pattern));
// Switch-specific statements.
if (!SemaRef.getSwitchStack().empty()) {
Pattern->AddTypedTextChunk("case");
Pattern->AddPlaceholderChunk("expression");
Pattern->AddChunk(CodeCompletionString::CK_Colon);
- Results.MaybeAddResult(Result(Pattern));
+ Results.AddResult(Result(Pattern));
// default:
Pattern = new CodeCompletionString;
Pattern->AddTypedTextChunk("default");
Pattern->AddChunk(CodeCompletionString::CK_Colon);
- Results.MaybeAddResult(Result(Pattern));
+ Results.AddResult(Result(Pattern));
}
/// while (condition) { statements }
Pattern->AddPlaceholderChunk("statements");
Pattern->AddChunk(CodeCompletionString::CK_VerticalSpace);
Pattern->AddChunk(CodeCompletionString::CK_RightBrace);
- Results.MaybeAddResult(Result(Pattern));
+ Results.AddResult(Result(Pattern));
// do { statements } while ( expression );
Pattern = new CodeCompletionString;
Pattern->AddPlaceholderChunk("expression");
Pattern->AddChunk(CodeCompletionString::CK_RightParen);
Pattern->AddChunk(CodeCompletionString::CK_SemiColon);
- Results.MaybeAddResult(Result(Pattern));
+ Results.AddResult(Result(Pattern));
// for ( for-init-statement ; condition ; expression ) { statements }
Pattern = new CodeCompletionString;
Pattern->AddPlaceholderChunk("statements");
Pattern->AddChunk(CodeCompletionString::CK_VerticalSpace);
Pattern->AddChunk(CodeCompletionString::CK_RightBrace);
- Results.MaybeAddResult(Result(Pattern));
+ Results.AddResult(Result(Pattern));
if (S->getContinueParent()) {
// continue ;
Pattern = new CodeCompletionString;
Pattern->AddTypedTextChunk("continue");
Pattern->AddChunk(CodeCompletionString::CK_SemiColon);
- Results.MaybeAddResult(Result(Pattern));
+ Results.AddResult(Result(Pattern));
}
if (S->getBreakParent()) {
Pattern = new CodeCompletionString;
Pattern->AddTypedTextChunk("break");
Pattern->AddChunk(CodeCompletionString::CK_SemiColon);
- Results.MaybeAddResult(Result(Pattern));
+ Results.AddResult(Result(Pattern));
}
// "return expression ;" or "return ;", depending on whether we
if (!isVoid)
Pattern->AddPlaceholderChunk("expression");
Pattern->AddChunk(CodeCompletionString::CK_SemiColon);
- Results.MaybeAddResult(Result(Pattern));
+ Results.AddResult(Result(Pattern));
// goto identifier ;
Pattern = new CodeCompletionString;
Pattern->AddChunk(CodeCompletionString::CK_HorizontalSpace);
Pattern->AddPlaceholderChunk("identifier");
Pattern->AddChunk(CodeCompletionString::CK_SemiColon);
- Results.MaybeAddResult(Result(Pattern));
+ Results.AddResult(Result(Pattern));
// Using directives
Pattern = new CodeCompletionString;
Pattern->AddChunk(CodeCompletionString::CK_HorizontalSpace);
Pattern->AddPlaceholderChunk("identifier");
Pattern->AddChunk(CodeCompletionString::CK_SemiColon);
- Results.MaybeAddResult(Result(Pattern));
+ Results.AddResult(Result(Pattern));
}
// Fall through (for statement expressions).
// 'this', if we're in a non-static member function.
if (CXXMethodDecl *Method = dyn_cast<CXXMethodDecl>(SemaRef.CurContext))
if (!Method->isStatic())
- Results.MaybeAddResult(Result("this"));
+ Results.AddResult(Result("this"));
// true, false
- Results.MaybeAddResult(Result("true"));
- Results.MaybeAddResult(Result("false"));
+ Results.AddResult(Result("true"));
+ Results.AddResult(Result("false"));
// dynamic_cast < type-id > ( expression )
Pattern = new CodeCompletionString;
Pattern->AddChunk(CodeCompletionString::CK_LeftParen);
Pattern->AddPlaceholderChunk("expression");
Pattern->AddChunk(CodeCompletionString::CK_RightParen);
- Results.MaybeAddResult(Result(Pattern));
+ Results.AddResult(Result(Pattern));
// static_cast < type-id > ( expression )
Pattern = new CodeCompletionString;
Pattern->AddChunk(CodeCompletionString::CK_LeftParen);
Pattern->AddPlaceholderChunk("expression");
Pattern->AddChunk(CodeCompletionString::CK_RightParen);
- Results.MaybeAddResult(Result(Pattern));
+ Results.AddResult(Result(Pattern));
// reinterpret_cast < type-id > ( expression )
Pattern = new CodeCompletionString;
Pattern->AddChunk(CodeCompletionString::CK_LeftParen);
Pattern->AddPlaceholderChunk("expression");
Pattern->AddChunk(CodeCompletionString::CK_RightParen);
- Results.MaybeAddResult(Result(Pattern));
+ Results.AddResult(Result(Pattern));
// const_cast < type-id > ( expression )
Pattern = new CodeCompletionString;
Pattern->AddChunk(CodeCompletionString::CK_LeftParen);
Pattern->AddPlaceholderChunk("expression");
Pattern->AddChunk(CodeCompletionString::CK_RightParen);
- Results.MaybeAddResult(Result(Pattern));
+ Results.AddResult(Result(Pattern));
// typeid ( expression-or-type )
Pattern = new CodeCompletionString;
Pattern->AddChunk(CodeCompletionString::CK_LeftParen);
Pattern->AddPlaceholderChunk("expression-or-type");
Pattern->AddChunk(CodeCompletionString::CK_RightParen);
- Results.MaybeAddResult(Result(Pattern));
+ Results.AddResult(Result(Pattern));
// new T ( ... )
Pattern = new CodeCompletionString;
Pattern->AddChunk(CodeCompletionString::CK_LeftParen);
Pattern->AddPlaceholderChunk("expressions");
Pattern->AddChunk(CodeCompletionString::CK_RightParen);
- Results.MaybeAddResult(Result(Pattern));
+ Results.AddResult(Result(Pattern));
// new T [ ] ( ... )
Pattern = new CodeCompletionString;
Pattern->AddChunk(CodeCompletionString::CK_LeftParen);
Pattern->AddPlaceholderChunk("expressions");
Pattern->AddChunk(CodeCompletionString::CK_RightParen);
- Results.MaybeAddResult(Result(Pattern));
+ Results.AddResult(Result(Pattern));
// delete expression
Pattern = new CodeCompletionString;
Pattern->AddTypedTextChunk("delete");
Pattern->AddChunk(CodeCompletionString::CK_HorizontalSpace);
Pattern->AddPlaceholderChunk("expression");
- Results.MaybeAddResult(Result(Pattern));
+ Results.AddResult(Result(Pattern));
// delete [] expression
Pattern = new CodeCompletionString;
Pattern->AddChunk(CodeCompletionString::CK_RightBracket);
Pattern->AddChunk(CodeCompletionString::CK_HorizontalSpace);
Pattern->AddPlaceholderChunk("expression");
- Results.MaybeAddResult(Result(Pattern));
+ Results.AddResult(Result(Pattern));
// throw expression
Pattern = new CodeCompletionString;
Pattern->AddTypedTextChunk("throw");
Pattern->AddChunk(CodeCompletionString::CK_HorizontalSpace);
Pattern->AddPlaceholderChunk("expression");
- Results.MaybeAddResult(Result(Pattern));
+ Results.AddResult(Result(Pattern));
}
if (SemaRef.getLangOptions().ObjC1) {
// Add "super", if we're in an Objective-C class with a superclass.
if (ObjCMethodDecl *Method = SemaRef.getCurMethodDecl())
if (Method->getClassInterface()->getSuperClass())
- Results.MaybeAddResult(Result("super"));
+ Results.AddResult(Result("super"));
AddObjCExpressionResults(Results, true);
}
Pattern->AddChunk(CodeCompletionString::CK_LeftParen);
Pattern->AddPlaceholderChunk("expression-or-type");
Pattern->AddChunk(CodeCompletionString::CK_RightParen);
- Results.MaybeAddResult(Result(Pattern));
+ Results.AddResult(Result(Pattern));
break;
}
}
AddTypeSpecifierResults(SemaRef.getLangOptions(), Results);
if (SemaRef.getLangOptions().CPlusPlus)
- Results.MaybeAddResult(Result("operator"));
+ Results.AddResult(Result("operator"));
}
/// \brief If the given declaration has an associated type, add it as a result
for (Preprocessor::macro_iterator M = PP.macro_begin(),
MEnd = PP.macro_end();
M != MEnd; ++M)
- Results.MaybeAddResult(M->first);
+ Results.AddResult(M->first);
Results.ExitScope();
}
}
if (IsDependent)
- Results.MaybeAddResult(Result("template"));
+ Results.AddResult(Result("template"));
}
}
} else if (!IsArrow && BaseType->getAsObjCInterfacePointerType()) {
// put it into the grammar if the nested-name-specifier is dependent.
NestedNameSpecifier *NNS = (NestedNameSpecifier *)SS.getScopeRep();
if (!Results.empty() && NNS->isDependent())
- Results.MaybeAddResult("template");
+ Results.AddResult("template");
if (CodeCompleter->includeMacros())
AddMacroResults(PP, Results);
// If we aren't in class scope, we could see the "namespace" keyword.
if (!S->isClassScope())
- Results.MaybeAddResult(CodeCompleteConsumer::Result("namespace"));
+ Results.AddResult(CodeCompleteConsumer::Result("namespace"));
// After "using", we can see anything that would start a
// nested-name-specifier.
// Add the names of overloadable operators.
#define OVERLOADED_OPERATOR(Name,Spelling,Token,Unary,Binary,MemberOnly) \
if (std::strcmp(Spelling, "?")) \
- Results.MaybeAddResult(Result(Spelling));
+ Results.AddResult(Result(Spelling));
#include "clang/Basic/OperatorKinds.def"
// Add any type names visible from the current scope
bool NeedAt) {
typedef CodeCompleteConsumer::Result Result;
// Since we have an implementation, we can end it.
- Results.MaybeAddResult(Result(OBJC_AT_KEYWORD_NAME(NeedAt,end)));
+ Results.AddResult(Result(OBJC_AT_KEYWORD_NAME(NeedAt,end)));
CodeCompletionString *Pattern = 0;
if (LangOpts.ObjC2) {
Pattern->AddTypedTextChunk(OBJC_AT_KEYWORD_NAME(NeedAt,dynamic));
Pattern->AddChunk(CodeCompletionString::CK_HorizontalSpace);
Pattern->AddPlaceholderChunk("property");
- Results.MaybeAddResult(Result(Pattern));
+ Results.AddResult(Result(Pattern));
// @synthesize
Pattern = new CodeCompletionString;
Pattern->AddTypedTextChunk(OBJC_AT_KEYWORD_NAME(NeedAt,synthesize));
Pattern->AddChunk(CodeCompletionString::CK_HorizontalSpace);
Pattern->AddPlaceholderChunk("property");
- Results.MaybeAddResult(Result(Pattern));
+ Results.AddResult(Result(Pattern));
}
}
typedef CodeCompleteConsumer::Result Result;
// Since we have an interface or protocol, we can end it.
- Results.MaybeAddResult(Result(OBJC_AT_KEYWORD_NAME(NeedAt,end)));
+ Results.AddResult(Result(OBJC_AT_KEYWORD_NAME(NeedAt,end)));
if (LangOpts.ObjC2) {
// @property
- Results.MaybeAddResult(Result(OBJC_AT_KEYWORD_NAME(NeedAt,property)));
+ Results.AddResult(Result(OBJC_AT_KEYWORD_NAME(NeedAt,property)));
// @required
- Results.MaybeAddResult(Result(OBJC_AT_KEYWORD_NAME(NeedAt,required)));
+ Results.AddResult(Result(OBJC_AT_KEYWORD_NAME(NeedAt,required)));
// @optional
- Results.MaybeAddResult(Result(OBJC_AT_KEYWORD_NAME(NeedAt,optional)));
+ Results.AddResult(Result(OBJC_AT_KEYWORD_NAME(NeedAt,optional)));
}
}
Pattern->AddChunk(CodeCompletionString::CK_HorizontalSpace);
Pattern->AddPlaceholderChunk("identifier");
Pattern->AddChunk(CodeCompletionString::CK_SemiColon);
- Results.MaybeAddResult(Result(Pattern));
+ Results.AddResult(Result(Pattern));
// @interface name
// FIXME: Could introduce the whole pattern, including superclasses and
Pattern->AddTypedTextChunk(OBJC_AT_KEYWORD_NAME(NeedAt,interface));
Pattern->AddChunk(CodeCompletionString::CK_HorizontalSpace);
Pattern->AddPlaceholderChunk("class");
- Results.MaybeAddResult(Result(Pattern));
+ Results.AddResult(Result(Pattern));
// @protocol name
Pattern = new CodeCompletionString;
Pattern->AddTypedTextChunk(OBJC_AT_KEYWORD_NAME(NeedAt,protocol));
Pattern->AddChunk(CodeCompletionString::CK_HorizontalSpace);
Pattern->AddPlaceholderChunk("protocol");
- Results.MaybeAddResult(Result(Pattern));
+ Results.AddResult(Result(Pattern));
// @implementation name
Pattern = new CodeCompletionString;
Pattern->AddTypedTextChunk(OBJC_AT_KEYWORD_NAME(NeedAt,implementation));
Pattern->AddChunk(CodeCompletionString::CK_HorizontalSpace);
Pattern->AddPlaceholderChunk("class");
- Results.MaybeAddResult(Result(Pattern));
+ Results.AddResult(Result(Pattern));
// @compatibility_alias name
Pattern = new CodeCompletionString;
Pattern->AddPlaceholderChunk("alias");
Pattern->AddChunk(CodeCompletionString::CK_HorizontalSpace);
Pattern->AddPlaceholderChunk("class");
- Results.MaybeAddResult(Result(Pattern));
+ Results.AddResult(Result(Pattern));
}
void Sema::CodeCompleteObjCAtDirective(Scope *S, DeclPtrTy ObjCImpDecl,
Pattern->AddChunk(CodeCompletionString::CK_LeftParen);
Pattern->AddPlaceholderChunk("type-name");
Pattern->AddChunk(CodeCompletionString::CK_RightParen);
- Results.MaybeAddResult(Result(Pattern));
+ Results.AddResult(Result(Pattern));
// @protocol ( protocol-name )
Pattern = new CodeCompletionString;
Pattern->AddChunk(CodeCompletionString::CK_LeftParen);
Pattern->AddPlaceholderChunk("protocol-name");
Pattern->AddChunk(CodeCompletionString::CK_RightParen);
- Results.MaybeAddResult(Result(Pattern));
+ Results.AddResult(Result(Pattern));
// @selector ( selector )
Pattern = new CodeCompletionString;
Pattern->AddChunk(CodeCompletionString::CK_LeftParen);
Pattern->AddPlaceholderChunk("selector");
Pattern->AddChunk(CodeCompletionString::CK_RightParen);
- Results.MaybeAddResult(Result(Pattern));
+ Results.AddResult(Result(Pattern));
}
static void AddObjCStatementResults(ResultBuilder &Results, bool NeedAt) {
Pattern->AddChunk(CodeCompletionString::CK_LeftBrace);
Pattern->AddPlaceholderChunk("statements");
Pattern->AddChunk(CodeCompletionString::CK_RightBrace);
- Results.MaybeAddResult(Result(Pattern));
+ Results.AddResult(Result(Pattern));
// @throw
Pattern = new CodeCompletionString;
Pattern->AddChunk(CodeCompletionString::CK_HorizontalSpace);
Pattern->AddPlaceholderChunk("expression");
Pattern->AddChunk(CodeCompletionString::CK_SemiColon);
- Results.MaybeAddResult(Result(Pattern));
+ Results.AddResult(Result(Pattern));
// @synchronized ( expression ) { statements }
Pattern = new CodeCompletionString;
Pattern->AddChunk(CodeCompletionString::CK_LeftBrace);
Pattern->AddPlaceholderChunk("statements");
Pattern->AddChunk(CodeCompletionString::CK_RightBrace);
- Results.MaybeAddResult(Result(Pattern));
+ Results.AddResult(Result(Pattern));
}
static void AddObjCVisibilityResults(const LangOptions &LangOpts,
ResultBuilder &Results,
bool NeedAt) {
typedef CodeCompleteConsumer::Result Result;
- Results.MaybeAddResult(Result(OBJC_AT_KEYWORD_NAME(NeedAt,private)));
- Results.MaybeAddResult(Result(OBJC_AT_KEYWORD_NAME(NeedAt,protected)));
- Results.MaybeAddResult(Result(OBJC_AT_KEYWORD_NAME(NeedAt,public)));
+ Results.AddResult(Result(OBJC_AT_KEYWORD_NAME(NeedAt,private)));
+ Results.AddResult(Result(OBJC_AT_KEYWORD_NAME(NeedAt,protected)));
+ Results.AddResult(Result(OBJC_AT_KEYWORD_NAME(NeedAt,public)));
if (LangOpts.ObjC2)
- Results.MaybeAddResult(Result(OBJC_AT_KEYWORD_NAME(NeedAt,package)));
+ Results.AddResult(Result(OBJC_AT_KEYWORD_NAME(NeedAt,package)));
}
void Sema::CodeCompleteObjCAtVisibility(Scope *S) {
ResultBuilder Results(*this);
Results.EnterNewScope();
if (!ObjCPropertyFlagConflicts(Attributes, ObjCDeclSpec::DQ_PR_readonly))
- Results.MaybeAddResult(CodeCompleteConsumer::Result("readonly"));
+ Results.AddResult(CodeCompleteConsumer::Result("readonly"));
if (!ObjCPropertyFlagConflicts(Attributes, ObjCDeclSpec::DQ_PR_assign))
- Results.MaybeAddResult(CodeCompleteConsumer::Result("assign"));
+ Results.AddResult(CodeCompleteConsumer::Result("assign"));
if (!ObjCPropertyFlagConflicts(Attributes, ObjCDeclSpec::DQ_PR_readwrite))
- Results.MaybeAddResult(CodeCompleteConsumer::Result("readwrite"));
+ Results.AddResult(CodeCompleteConsumer::Result("readwrite"));
if (!ObjCPropertyFlagConflicts(Attributes, ObjCDeclSpec::DQ_PR_retain))
- Results.MaybeAddResult(CodeCompleteConsumer::Result("retain"));
+ Results.AddResult(CodeCompleteConsumer::Result("retain"));
if (!ObjCPropertyFlagConflicts(Attributes, ObjCDeclSpec::DQ_PR_copy))
- Results.MaybeAddResult(CodeCompleteConsumer::Result("copy"));
+ Results.AddResult(CodeCompleteConsumer::Result("copy"));
if (!ObjCPropertyFlagConflicts(Attributes, ObjCDeclSpec::DQ_PR_nonatomic))
- Results.MaybeAddResult(CodeCompleteConsumer::Result("nonatomic"));
+ Results.AddResult(CodeCompleteConsumer::Result("nonatomic"));
if (!ObjCPropertyFlagConflicts(Attributes, ObjCDeclSpec::DQ_PR_setter)) {
CodeCompletionString *Setter = new CodeCompletionString;
Setter->AddTypedTextChunk("setter");
Setter->AddTextChunk(" = ");
Setter->AddPlaceholderChunk("method");
- Results.MaybeAddResult(CodeCompleteConsumer::Result(Setter));
+ Results.AddResult(CodeCompleteConsumer::Result(Setter));
}
if (!ObjCPropertyFlagConflicts(Attributes, ObjCDeclSpec::DQ_PR_getter)) {
CodeCompletionString *Getter = new CodeCompletionString;
Getter->AddTypedTextChunk("getter");
Getter->AddTextChunk(" = ");
Getter->AddPlaceholderChunk("method");
- Results.MaybeAddResult(CodeCompleteConsumer::Result(Getter));
+ Results.AddResult(CodeCompleteConsumer::Result(Getter));
}
Results.ExitScope();
HandleCodeCompleteResults(this, CodeCompleter, Results.data(),Results.size());