Lines Matching refs:New

1556   FunctionDecl *New = FunctionDecl::Create(Context,
1562 New->setImplicit();
1570 ParmVarDecl::Create(Context, New, SourceLocation(),
1577 New->setParams(Params);
1580 AddKnownFunctionAttributes(New);
1581 RegisterLocallyScopedExternCDecl(New, S);
1589 PushOnScopeChains(New, TUScope);
1591 return New;
1624 bool Sema::isIncompatibleTypedef(TypeDecl *Old, TypedefNameDecl *New) {
1630 QualType NewType = New->getUnderlyingType();
1635 Diag(New->getLocation(), diag::err_redefinition_variably_modified_typedef)
1639 New->setInvalidDecl();
1648 Diag(New->getLocation(), diag::err_redefinition_different_typedef)
1652 New->setInvalidDecl();
1658 /// MergeTypedefNameDecl - We just parsed a typedef 'New' which has the
1661 /// diagnostics as appropriate. If there was an error, set New to be invalid.
1663 void Sema::MergeTypedefNameDecl(TypedefNameDecl *New, LookupResult &OldDecls) {
1666 if (New->isInvalidDecl()) return;
1671 const IdentifierInfo *TypeID = New->getIdentifier();
1678 QualType T = New->getUnderlyingType();
1688 New->setTypeForDecl(Context.getObjCIdType().getTypePtr());
1694 Context.setObjCClassRedefinitionType(New->getUnderlyingType());
1696 New->setTypeForDecl(Context.getObjCClassType().getTypePtr());
1701 Context.setObjCSelRedefinitionType(New->getUnderlyingType());
1703 New->setTypeForDecl(Context.getObjCSelType().getTypePtr());
1712 Diag(New->getLocation(), diag::err_redefinition_different_kind)
1713 << New->getDeclName();
1719 return New->setInvalidDecl();
1724 return New->setInvalidDecl();
1728 if (isIncompatibleTypedef(Old, New))
1734 New->setPreviousDecl(Typedef);
1735 mergeDeclAttributes(New, Old);
1773 Diag(New->getLocation(), diag::err_redefinition)
1774 << New->getDeclName();
1776 return New->setInvalidDecl();
1789 Context.getSourceManager().isInSystemHeader(New->getLocation())))
1792 Diag(New->getLocation(), diag::warn_redefinition_of_typedef)
1793 << New->getDeclName();
1854 /// Merge alignment attributes from \p Old to \p New, taking into account the
1857 /// \return \c true if any attributes were added to \p New.
1858 static bool mergeAlignedAttrs(Sema &S, NamedDecl *New, Decl *Old) {
1886 // Look for alignas attributes on New.
1890 I = New->specific_attr_begin<AlignedAttr>(),
1891 E = New->specific_attr_end<AlignedAttr>(); I != E; ++I) {
1913 if (ValueDecl *VD = dyn_cast<ValueDecl>(New))
1916 Ty = S.Context.getTagDeclType(cast<TagDecl>(New));
1932 if (OldAlignasAttr && !NewAlignasAttr && isAttributeTargetADefinition(New)) {
1941 S.Diag(New->getLocation(), diag::err_alignas_missing_on_definition)
1953 New->addAttr(Clone);
1962 New->addAttr(Clone);
2043 static void checkNewAttributesAfterDef(Sema &S, Decl *New, const Decl *Old) {
2044 if (!New->hasAttrs())
2048 if (!Def || Def == New)
2051 AttrVec &NewAttributes = New->getAttrs();
2056 if (FunctionDecl *FD = dyn_cast<FunctionDecl>(New))
2059 VarDecl *VD = cast<VarDecl>(New);
2117 /// mergeDeclAttributes - Copy attributes from the Old decl to the New one.
2118 void Sema::mergeDeclAttributes(NamedDecl *New, Decl *Old,
2123 New->addAttr(NewAttr);
2126 if (!Old->hasAttrs() && !New->hasAttrs())
2130 checkNewAttributesAfterDef(*this, New, Old);
2135 bool foundAny = New->hasAttrs();
2139 if (!foundAny) New->setAttrs(AttrVec());
2167 if (mergeDeclAttribute(*this, New, *i, Override))
2171 if (mergeAlignedAttrs(*this, New, Old))
2174 if (!foundAny) New->dropAttrs();
2277 static bool haveIncompatibleLanguageLinkages(const T *Old, const T *New) {
2283 if (OldLinkage == CXXLanguageLinkage && New->isInExternCContext())
2285 if (OldLinkage == CLanguageLinkage && New->isInExternCXXContext())
2290 /// MergeFunctionDecl - We just parsed a function 'New' from
2295 /// In C++, New and Old must be declarations that are not
2296 /// overloaded. Use IsOverload to determine whether New and Old are
2297 /// overloaded, and to select the Old declaration that New should be
2301 bool Sema::MergeFunctionDecl(FunctionDecl *New, Decl *OldD, Scope *S,
2312 if (New->getFriendObjectKind()) {
2313 Diag(New->getLocation(), diag::err_using_decl_friend);
2321 Diag(New->getLocation(), diag::err_using_decl_conflict_reverse);
2329 Diag(New->getLocation(), diag::err_redefinition_different_kind)
2330 << New->getDeclName();
2353 if (!isa<CXXMethodDecl>(New) && !isa<CXXMethodDecl>(Old) &&
2354 New->getStorageClass() == SC_Static &&
2356 !New->getTemplateSpecializationInfo() &&
2359 Diag(New->getLocation(), diag::warn_static_non_static) << New;
2362 Diag(New->getLocation(), diag::err_static_non_static) << New;
2383 QualType NewQType = Context.getCanonicalType(New->getType());
2395 bool NewCCExplicit = getCallingConvAttributedType(New->getType());
2404 Diag(New->getLocation(), diag::err_cconv_change)
2426 Diag(New->getLocation(), diag::err_regparm_mismatch)
2440 Diag(New->getLocation(), diag::err_returns_retained_mismatch);
2450 const FunctionType *AdjustedType = New->getType()->getAs<FunctionType>();
2452 New->setType(QualType(AdjustedType, 0));
2453 NewQType = Context.getCanonicalType(New->getType());
2459 if (!Old->isInlined() && New->isInlined() &&
2460 !New->hasAttr<GNUInlineAttr>() &&
2463 !Old->isDefined() && !New->isThisDeclarationADefinition())
2469 if (New->hasAttr<GNUInlineAttr>() &&
2488 QualType NewDeclaredReturnType = (New->getTypeSourceInfo()
2489 ? New->getTypeSourceInfo()->getType()->castAs<FunctionType>()
2494 New->isLocalExternDecl())) {
2499 if (New->isCXXClassMember() && New->isOutOfLine())
2500 Diag(New->getLocation(),
2501 diag::err_member_def_does_not_match_ret_type) << New;
2503 Diag(New->getLocation(), diag::err_ovl_diff_return_type);
2518 New->setType(
2519 SubstAutoType(New->getType(),
2530 CXXMethodDecl *NewMethod = dyn_cast<CXXMethodDecl>(New);
2549 Diag(New->getLocation(), diag::err_ovl_static_nonstatic_member);
2569 Diag(New->getLocation(), NewDiag);
2571 Diag(New->getLocation(), diag::err_member_redeclared_in_instantiation)
2572 << New << New->getType();
2587 << New << getSpecialMember(OldMethod);
2602 if (New->hasAttr<CXX11NoReturnAttr>() &&
2604 Diag(New->getAttr<CXX11NoReturnAttr>()->getLocation(),
2614 if (New->hasAttr<CarriesDependencyAttr>() &&
2616 Diag(New->getAttr<CarriesDependencyAttr>()->getLocation(),
2637 if (haveIncompatibleLanguageLinkages(Old, New)) {
2646 if (New->getFriendObjectKind() != Decl::FOK_None) {
2647 Diag(New->getLocation(), diag::ext_retained_language_linkage) << New;
2650 Diag(New->getLocation(), diag::err_different_language_linkage) << New;
2657 return MergeCompatibleFunctionDecls(New, Old, S, MergeTypeWithOld);
2660 New->isLocalExternDecl()) {
2687 New->setType(NewQType);
2688 New->setHasInheritedPrototype();
2696 ParmVarDecl *Param = ParmVarDecl::Create(Context, New,
2707 New->setParams(Params);
2710 return MergeCompatibleFunctionDecls(New, Old, S, MergeTypeWithOld);
2725 Old->hasPrototype() && !New->hasPrototype() &&
2726 New->getType()->getAs<FunctionProtoType>() &&
2727 Old->getNumParams() == New->getNumParams()) {
2733 = New->getType()->getAs<FunctionProtoType>();
2742 ParmVarDecl *NewParm = New->getParamDecl(Idx);
2769 New->setType(Context.getFunctionType(MergedReturn, ArgTypes,
2771 return MergeCompatibleFunctionDecls(New, Old, S, MergeTypeWithOld);
2787 Diag(New->getLocation(), diag::warn_redecl_library_builtin) << New;
2799 if (!New->getLexicalDeclContext()->isFunctionOrMethod())
2800 New->getIdentifier()->setBuiltinID(Builtin::NotBuiltin);
2808 Diag(New->getLocation(), diag::err_conflicting_types) << New->getDeclName();
2818 /// the new declaration, once we know that New is in fact a
2822 bool Sema::MergeCompatibleFunctionDecls(FunctionDecl *New, FunctionDecl *Old,
2825 mergeDeclAttributes(New, Old);
2829 New->setPure();
2833 New->setIsUsed();
2837 if (New->getNumParams() == Old->getNumParams())
2838 for (unsigned i = 0, e = New->getNumParams(); i != e; ++i)
2839 mergeParamDeclAttributes(New->getParamDecl(i), Old->getParamDecl(i),
2843 return MergeCXXFunctionDecl(New, Old, S);
2848 QualType Merged = Context.mergeTypes(Old->getType(), New->getType());
2850 New->setType(Merged);
2876 /// MergeVarDeclTypes - We parsed a variable 'New' which has the same name and
2883 void Sema::MergeVarDeclTypes(VarDecl *New, VarDecl *Old,
2885 if (New->isInvalidDecl() || Old->isInvalidDecl())
2890 if (New->getType()->isUndeducedType()) {
2893 } else if (Context.hasSameType(New->getType(), Old->getType())) {
2895 return MergeVarDeclExceptionSpecs(New, Old);
2903 New->getType()->isArrayType()) {
2905 const ArrayType *NewArray = Context.getAsArrayType(New->getType());
2908 MergedT = New->getType();
2910 New->getType()->isIncompleteArrayType()) {
2912 const ArrayType *NewArray = Context.getAsArrayType(New->getType());
2916 } else if (New->getType()->isObjCObjectPointerType() &&
2918 MergedT = Context.mergeObjCGCQualifiers(New->getType(),
2925 MergedT = Context.mergeTypes(New->getType(), Old->getType());
2933 if ((New->getType()->isDependentType() ||
2934 Old->getType()->isDependentType()) && New->isLocalVarDecl()) {
2938 if (!New->getType()->isDependentType() && MergeTypeWithOld)
2939 New->setType(Context.DependentTy);
2952 Diag(New->getLocation(), diag::err_redefinition_different_type)
2953 << New->getDeclName() << New->getType() << Old->getType();
2955 return New->setInvalidDecl();
2961 New->setType(MergedT);
2993 /// MergeVarDecl - We just parsed a variable 'New' which has the same name
3001 void Sema::MergeVarDecl(VarDecl *New, LookupResult &Previous) {
3003 if (New->isInvalidDecl())
3010 if (New->getDescribedVarTemplate())
3016 Diag(New->getLocation(), diag::err_redefinition_different_kind)
3017 << New->getDeclName();
3020 return New->setInvalidDecl();
3023 if (!shouldLinkPossiblyHiddenDecl(Old, New))
3030 if (Old->isStaticDataMember() && !New->isOutOfLine()) {
3031 Diag(New->getLocation(), diag::err_duplicate_member)
3032 << New->getIdentifier();
3034 New->setInvalidDecl();
3037 mergeDeclAttributes(New, Old);
3040 if (New->getAttr<WeakImportAttr>() &&
3043 Diag(New->getLocation(), diag::warn_weak_import) << New->getDeclName();
3046 New->dropAttr<WeakImportAttr>();
3050 MergeVarDeclTypes(New, Old, mergeTypeWithPrevious(*this, New, Old, Previous));
3052 if (New->isInvalidDecl())
3056 if (New->getStorageClass() == SC_Static &&
3057 !New->isStaticDataMember() &&
3059 Diag(New->getLocation(), diag::err_static_non_static) << New->getDeclName();
3061 return New->setInvalidDecl();
3072 if (New->hasExternalStorage() && Old->hasLinkage())
3074 else if (New->getCanonicalDecl()->getStorageClass() != SC_Static &&
3075 !New->isStaticDataMember() &&
3077 Diag(New->getLocation(), diag::err_non_static_static) << New->getDeclName();
3079 return New->setInvalidDecl();
3083 if (New->hasExternalStorage() &&
3085 Diag(New->getLocation(), diag::err_extern_non_extern) << New->getDeclName();
3087 return New->setInvalidDecl();
3089 if (Old->hasLinkage() && New->isLocalVarDecl() &&
3090 !New->hasExternalStorage()) {
3091 Diag(New->getLocation(), diag::err_non_extern_extern) << New->getDeclName();
3093 return New->setInvalidDecl();
3100 if (!New->hasExternalStorage() && !New->isFileVarDecl() &&
3103 !New->getLexicalDeclContext()->isRecord())) {
3104 Diag(New->getLocation(), diag::err_redefinition) << New->getDeclName();
3106 return New->setInvalidDecl();
3109 if (New->getTLSKind() != Old->getTLSKind()) {
3111 Diag(New->getLocation(), diag::err_thread_non_thread) << New->getDeclName();
3113 } else if (!New->getTLSKind()) {
3114 Diag(New->getLocation(), diag::err_non_thread_thread) << New->getDeclName();
3121 Diag(New->getLocation(), diag::err_thread_thread_different_kind)
3122 << New->getDeclName() << (New->getTLSKind() == VarDecl::TLS_Dynamic);
3130 New->isThisDeclarationADefinition() == VarDecl::Definition &&
3132 Diag(New->getLocation(), diag::err_redefinition) << New;
3134 New->setInvalidDecl();
3138 if (haveIncompatibleLanguageLinkages(Old, New)) {
3139 Diag(New->getLocation(), diag::err_different_language_linkage) << New;
3141 New->setInvalidDecl();
3147 New->setIsUsed();
3150 New->setPreviousDecl(Old);
3153 New->setAccess(Old->getAccess());
3155 if (VarTemplateDecl *VTD = New->getDescribedVarTemplate()) {
3156 if (New->isStaticDataMember() && New->isOutOfLine())
3157 VTD->setAccess(New->getAccess());
4377 NamedDecl *New;
4386 New = ActOnTypedefDeclarator(S, D, DC, TInfo, Previous);
4388 New = ActOnFunctionDeclarator(S, D, DC, TInfo, Previous,
4392 New = ActOnVariableDeclarator(S, D, DC, TInfo, Previous, TemplateParamLists,
4396 if (New == 0)
4401 if (New->getDeclName() && AddToScope &&
4402 !(D.isRedeclaration() && New->isInvalidDecl())) {
4406 bool AddToContext = !D.isRedeclaration() || !New->isLocalExternDecl();
4407 PushOnScopeChains(New, S, AddToContext);
4409 CurContext->addHiddenDecl(New);
4412 return New;
9173 ParmVarDecl *New = CheckParameter(Context.getTranslationUnitDecl(),
9180 New->setInvalidDecl();
9184 New->setScopeInfo(S->getFunctionPrototypeDepth() - 1,
9188 S->AddDecl(New);
9190 IdResolver.AddDecl(New);
9192 ProcessDeclAttributes(S, New, D);
9195 Diag(New->getLocation(), diag::err_module_private_local)
9196 << 1 << New->getDeclName()
9200 if (New->hasAttr<BlocksAttr>()) {
9201 Diag(New->getLocation(), diag::err_block_on_nonlocal);
9203 return New;
9293 ParmVarDecl *New = ParmVarDecl::Create(Context, DC, StartLoc, NameLoc, Name,
9304 New->setInvalidDecl();
9314 New->setType(T);
9323 New->setInvalidDecl();
9326 return New;
10884 TagDecl *New;
10890 New = EnumDecl::Create(Context, SearchDC, KWLoc, Loc, Name,
10897 cast<EnumDecl>(New)->isFixed()) {
10903 << New;
10922 EnumDecl *ED = cast<EnumDecl>(New);
10937 New = CXXRecordDecl::Create(Context, Kind, SearchDC, KWLoc, Loc, Name,
10941 StdBadAlloc = cast<CXXRecordDecl>(New);
10943 New = RecordDecl::Create(Context, Kind, SearchDC, KWLoc, Loc, Name,
10960 New->setQualifierInfo(SS.getWithLocInContext(Context));
10962 New->setTemplateParameterListsInfo(Context,
10971 if (RecordDecl *RD = dyn_cast<RecordDecl>(New)) {
10989 Diag(New->getLocation(), diag::err_module_private_specialization)
10996 New->setModulePrivate();
11001 if (isExplicitSpecialization && CheckMemberSpecialization(New, Previous))
11005 New->setInvalidDecl();
11008 ProcessDeclAttributeList(S, New, Attr);
11013 Diag(Loc, diag::warn_decl_in_param_list) << Context.getTagDeclType(New);
11017 New->setLexicalDeclContext(CurContext);
11024 New->setObjectOfFriendDecl(!FriendSawTagOutsideEnclosingNamespace &&
11029 SetMemberAccessSpecifier(New, PrevDecl, AS);
11032 New->startDefinition();
11039 New->setAccess(PrevDecl->getAccess());
11041 DeclContext *DC = New->getDeclContext()->getRedeclContext();
11042 DC->makeDeclVisibleInContext(New);
11045 PushOnScopeChains(New, EnclosingScope, /* AddToContext = */ false);
11048 PushOnScopeChains(New, S, !IsForwardReference);
11050 SearchDC->makeDeclVisibleInContext(New);
11053 CurContext->addDecl(New);
11057 if (IdentifierInfo *II = New->getIdentifier())
11058 if (!New->isInvalidDecl() &&
11059 New->getDeclContext()->getRedeclContext()->isTranslationUnit() &&
11061 Context.setFILEDecl(New);
11067 DeclsInPrototypeScope.push_back(New);
11070 mergeDeclAttributes(New, PrevDecl);
11074 AddPushedVisibilityAttribute(New);
11079 return (Invalid && getLangOpts().CPlusPlus) ? 0 : New;
12466 EnumConstantDecl *New =
12469 if (New) {
12471 if (Attr) ProcessDeclAttributeList(S, New, Attr);
12474 New->setAccess(TheEnumDecl->getAccess());
12475 PushOnScopeChains(New, S);
12478 ActOnDocumentableDecl(New);
12480 return New;
12894 FileScopeAsmDecl *New = FileScopeAsmDecl::Create(Context, CurContext,
12897 CurContext->addDecl(New);
12898 return New;