Home | History | Annotate | Download | only in Sema

Lines Matching defs:IS

84   // FIXME: This is bogus, a noexcept expression is not a condition.
110 /// CheckSpecifiedExceptionType - Check if the given type is valid in an
115 /// when the input is an array or a function type.
119 // in an exception-specification is adjusted to type T, "pointer to T", or
134 // cv void* is explicitly permitted, despite being a pointer to an
181 /// CheckDistantExceptionSpec - Check if the given type is a pointer or pointer
183 /// it is invalid to add another level of indirection.
276 // - if this is a destructor, its exception specification is implicit.
277 // - if this is 'operator delete' or 'operator delete[]', the exception
278 // specification is as-if an explicit exception specification was given
289 // In C++17 onwards, the exception specification is part of the type and
315 // specification adjustment is applied.
337 // specification; return an error, except in MS mode where this is a warning.
344 // The new function declaration is only missing an empty exception
351 // Likewise if the old function is a builtin.
401 // Allow missing attribute 'nothrow' in redeclarations, since this is a very
453 llvm_unreachable("This spec type is compatible with none.");
460 // location when there is a trailing return type.
484 /// that is achieved. See C++ [except.spec]p2.
507 /// \return \c false if the exception specifications match, \c true if there is
508 /// a problem. If \c true is returned, either a diagnostic has already been
509 /// produced or \c *MissingExceptionSpecification is set to \c true.
537 // C++0x [except.spec]p12: An exception-specification is non-throwing if it is
542 // specifier that is not a noexcept-specification allowing all exceptions,
547 // It's considered when AllowNoexceptAllMatchWithNoSpec is true.
566 // The exception is that the absence of an exception specification only
571 // This is the disallowed case.
614 // This is because the implicit declaration changed, but old code would break.
622 // One has no spec, the other throw(something). If that something is
628 // It's called bad_alloc, but is it in std?
637 // If the caller wants to handle the case that the new function is
675 // A handler is a match for an exception object of type E if:
683 // -- the handler is of type cv T or cv T& and E and T are the same type
693 // -- the handler is of type cv T or const T& where T is a pointer or
694 // pointer to member type and E is std::nullptr_t
698 // -- the handler is of type cv T or const T& where T is a pointer or
699 // pointer to member type and E is a pointer or pointer to member type
706 // conversion is required?
728 // The only remaining case is a derived-to-base conversion.
731 // -- the handler is of type cg T or cv T& and T is an unambiguous public
758 /// exception specification is a subset (or equivalent) of the first function
759 /// type. This is used by override and pointer assignment checks.
793 // If there are dependent noexcept specs, assume everything is fine. Unlike
794 // with the equivalency check, this is safe in this case, because we don't
881 /// two functions have equivalent exception specs. This is part of the
929 // This is not an error in C++17 onwards, unless the noexceptness doesn't
942 // FIXME: If there is a nested dependent exception specification, we should
943 // not be checking it here. This is fine:
964 // synthesize correct specs after the template is instantiated.
1076 // If this is a decomposition declaration, bindings might throw.
1133 // where T is a reference type, that requires a run-time check
1146 // expression whose type is a polymorphic class type
1521 auto *IS = cast<IfStmt>(S);
1523 if (const Stmt *Init = IS->getInit())
1525 if (const Stmt *CondDS = IS->getConditionVariableDeclStmt())
1527 CT = mergeCanThrow(CT, canThrow(IS->getCond()));
1531 if (Optional<const Stmt *> Case = IS->getNondiscardedCase(Context))
1534 CanThrowResult Then = canThrow(IS->getThen());
1535 CanThrowResult Else = IS->getElse() ? canThrow(IS->getElse()) : CT_Cannot;
1539 // For a dependent 'if constexpr', the result is dependent if it depends on
1541 return mergeCanThrow(CT, IS->isConstexpr() ? CT_Dependent