hanchenye-llvm-project/clang/test/SemaObjC
Hans Wennborg 4c539e8da1 Revert r374202"[ObjC generics] Fix not inheriting type bounds in categories/extensions."
This introduced new errors, see below. Reverting until that can be investigated
properly.

  #import <AVFoundation/AVFoundation.h>

  void f(int width, int height) {
    FourCharCode best_fourcc = kCMPixelFormat_422YpCbCr8_yuvs;
    NSDictionary* videoSettingsDictionary = @{
      (id)kCVPixelBufferPixelFormatTypeKey : @(best_fourcc),
    };
  }

  $ clang++ -c /tmp/a.mm

  /tmp/a.mm:6:5: error: cannot initialize a parameter of type
  'KeyType<NSCopying>  _Nonnull const' (aka 'const id') with an rvalue
  of type 'id'
      (id)kCVPixelBufferPixelFormatTypeKey : @(best_fourcc),
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  1 error generated.

> When a category/extension doesn't repeat a type bound, corresponding
> type parameter is substituted with `id` when used as a type argument. As
> a result, in the added test case it was causing errors like
>
> > type argument 'T' (aka 'id') does not satisfy the bound ('id<NSCopying>') of type parameter 'T'
>
> We are already checking that type parameters should be consistent
> everywhere (see `checkTypeParamListConsistency`) and update
> `ObjCTypeParamDecl` to have correct underlying type. And when we use the
> type parameter as a method return type or a method parameter type, it is
> substituted to the bounded type. But when we use the type parameter as a
> type argument, we check `ObjCTypeParamType` that ignores the updated
> underlying type and remains `id`.
>
> Fix by desugaring `ObjCTypeParamType` to the underlying type, the same
> way we are doing with `TypedefType`.
>
> rdar://problem/54329242
>
> Reviewers: erik.pilkington, ahatanak
>
> Reviewed By: erik.pilkington
>
> Subscribers: jkorous, dexonsmith, ributzka, cfe-commits
>
> Differential Revision: https://reviews.llvm.org/D66696
2019-10-22 22:39:01 +02:00
..
Inputs [Sema][ObjC] Mark C union fields that have non-trivial ObjC ownership 2019-09-07 00:34:47 +00:00
ClassPropertyNotObject.m
ContClassPropertyLookup.m
DoubleMethod.m
NSString-type.m
aarch64-sve-types.m Add SVE opaque built-in types 2019-08-09 08:52:54 +00:00
access-property-getter.m
alias-test-1.m
alias-test-2.m
arc-bridged-cast.m
arc-cf.m
arc-decls.m [Sema] Diagnose default-initialization, destruction, and copying of 2019-09-07 00:34:43 +00:00
arc-dict-bridged-cast.m
arc-invalid.m
arc-jump-block.m
arc-no-runtime.m
arc-non-pod-memaccess.m
arc-nsconsumed-errors.m
arc-objc-lifetime-conflict.m Generate objc intrinsics instead of runtime calls as the ARC optimizer now works only on intrinsics 2018-12-18 20:33:00 +00:00
arc-objc-lifetime.m
arc-objcbridge-related-attribute.m
arc-peformselector.m Fix typos in clang 2018-04-06 15:14:32 +00:00
arc-property-decl-attrs.m [Sema] Fix a use-after-deallocate of a ParsedAttr 2019-04-02 19:48:11 +00:00
arc-property-lifetime.m
arc-property.m
arc-readonly-property-ivar-1.m
arc-readonly-property-ivar.m
arc-repeated-weak.mm Revert [Sema] Resolve placeholder types before type deduction to silence spurious `-Warc-repeated-use-of-weak` warnings 2019-07-08 21:59:07 +00:00
arc-setter-property-match.m
arc-system-header.m
arc-type-conversion.m
arc-unavailable-for-weakref.m
arc-unavailable-system-function.m
arc-unbridged-cast.m
arc-unsafe-assigns.m
arc-unsafe_unretained.m
arc.m Clean up and simplify RequireCompleteType. 2018-08-07 21:35:41 +00:00
argument-checking.m
assign-rvalue-message.m
at-defs.m
atomoic-property-synnthesis-rules.m
attr-availability-1.m Use dotted format of version tuple for availability diagnostics 2018-05-17 11:51:49 +00:00
attr-availability-priority.m Add a priority field to availability attributes to prioritize explicit 2019-01-24 19:14:39 +00:00
attr-availability.m Improve a -Wunguarded-availability note 2019-01-14 19:17:31 +00:00
attr-cf_returns.m
attr-cleanup.m
attr-deprecated-pch.m
attr-deprecated-replacement-fixit.m [Sema] Make deprecation fix-it replace all multi-parameter ObjC method slots. 2018-03-29 17:34:09 +00:00
attr-deprecated.m
attr-designated-init.m [Sema][ObjC] Allow silencing -Wobjc-designated-initializers warnings by 2019-03-01 06:43:20 +00:00
attr-malloc.m
attr-nodebug.m
attr-ns_returns_retained.m
attr-objc-exception.m
attr-objc-gc.m
attr-objc-non-lazy.m Support objc_nonlazy_class attribute on Objective-C implementations 2019-04-11 17:55:34 +00:00
attr-objc-runtime-visible.m
attr-print.m
attr-root-class.m
autoreleasepool.m
avoid-unavailable-implementation-warning-in-app-extension.m [ObjC] Supress the 'implementing unavailable method' warning when 2018-05-03 01:12:06 +00:00
bad-property-synthesis-crash.m
bad-receiver-1.m
block-as-object.m
block-attr.m
block-compare.mm Allow equality comparisons between block pointers and 2018-04-07 17:42:06 +00:00
block-explicit-return-type.m
block-id-as-block-argtype.m
block-ivar.m
block-literal-with-attribute.m
block-omitted-return-type.m
block-on-method-param.m
block-return.m
block-type-safety.m [ObjC] Fix type checking for qualified id block parameters. 2019-08-28 00:25:06 +00:00
blocks.m
boxing-illegal.m Use {{.*}} in test case to match the type of wide string literals. 2019-03-08 15:20:12 +00:00
builtin_objc_assign_ivar.m
builtin_objc_lib_functions.m
builtin_objc_msgSend.m
builtin_objc_nslog.m
call-super-2.m
call-unavailable-init-in-self.m [ObjC] Follow-up r350768 and allow the use of unavailable methods that are 2019-01-17 18:12:45 +00:00
catch-invalid.m Sema: diagnose invalid catch parameter in ObjC 2018-05-20 19:26:44 +00:00
catch-stmt.m
category-1.m
category-method-lookup-2.m
category-method-lookup.m
check-dup-decl-methods-1.m
check-dup-objc-decls-1.m
check-objcbridge-related-attribute-lookup.m
circular-container.m
class-bitfield.m
class-conforming-protocol-1.m
class-conforming-protocol-2.m
class-def-test-1.m
class-extension-after-implementation.m
class-extension-dup-methods.m
class-getter-using-dotsyntax.m
class-impl-1.m
class-message-protocol-lookup.m
class-method-lookup.m
class-method-self.m [ObjC] Add some additional test cases around pointer conversions. 2019-10-17 15:18:59 +00:00
class-property-access.m
class-proto-1.m
class-protocol-method-match.m
class-protocol.m
class-stub-attr-unsupported.m Add the `objc_class_stub` attribute. 2019-05-30 04:09:01 +00:00
class-stub-attr.m Add the `objc_class_stub` attribute. 2019-05-30 04:09:01 +00:00
class-unavail-warning.m Remove the temporary availability checking workaround for 2018-04-05 18:12:06 +00:00
cocoa-api-usage.m
cocoa-api-usage.m.fixed
compare-qualified-class.m Fix typos in clang 2018-04-06 15:14:32 +00:00
compare-qualified-id.m
compatible-protocol-qualified-types.m
compound-init.m
comptypes-1.m [ObjC] Diagnose implicit type coercion from ObjC 'Class' to object 2019-10-17 15:27:04 +00:00
comptypes-2.m
comptypes-3.m
comptypes-4.m
comptypes-5.m
comptypes-6.m
comptypes-7.m [ObjC] Add some additional test cases around pointer conversions. 2019-10-17 15:18:59 +00:00
comptypes-8.m
comptypes-9.m
comptypes-10.m
comptypes-a.m
comptypes-legal.m Fix some handling of AST nodes with diagnostics. 2018-03-28 04:16:13 +00:00
conditional-expr-2.m
conditional-expr-3.m
conditional-expr-4.m
conditional-expr-5.m
conditional-expr-6.m
conditional-expr-7.m
conditional-expr-8.m
conditional-expr.m
conflict-atomic-property.m
conflict-nonfragile-abi2.m
conflicting-ivar-test-1.m
continuation-class-err.m
continuation-class-property.m
conversion.m [Sema] Fix-up a -Wfloat-conversion diagnostic 2019-02-14 22:48:01 +00:00
crash-label.m
crash-on-objc-bool-literal.m
crash-on-type-args-protocols.m
custom-atomic-property.m
dealloc.m
debugger-cast-result-to-id.m
debugger-support.m
default-synthesize-1.m
default-synthesize-2.m
default-synthesize-3.m
default-synthesize.m
delay-parsing-cfunctions.m
deprecate_function_containers.m
deprecated-objc-introspection.m
deref-interface.m
diagnose_if.m
direct-synthesized-ivar-access.m
dist-object-modifiers.m
dllexport.m
dllimport.m
duplicate-ivar-check.m
duplicate-ivar-in-class-extension.m
duplicate-property-class-extension.m
duplicate-property.m
encode-typeof-test.m
enhanced-proto-2.m
enum-fixed-type.m Don't define __has_feature(objc_fixed_enum) in non-objc mode 2019-01-30 21:14:08 +00:00
err-ivar-access-in-class-method.m
error-implicit-property.m
error-missing-getter.m
error-outof-scope-property-use.m
error-property-gc-attr.m
exprs.m
externally-retained-no-arc.m [ObjCARC] Add an new attribute, objc_externally_retained 2019-01-04 18:33:06 +00:00
externally-retained.m Recommit r359859 "[Attribute/Diagnostics] Print macro if definition is an attribute declaration" 2019-05-07 03:20:17 +00:00
flexible-array-arc.m
flexible-array.m
foreach.m
format-arg-attribute.m
format-cstrings-warning.m
format-ostrace-warning.m
format-size-spec-nsinteger.m [Sema] -Wformat-pedantic only for NSInteger/NSUInteger %tu/%td on Darwin 2018-07-05 22:51:11 +00:00
format-strings-objc.m [Sema][ObjC] Fix a -Wformat false positive with localizedStringForKey 2019-08-14 16:57:11 +00:00
format-strings-oslog.m os_log: Allow specifying mask type in format string. 2018-11-06 07:05:14 +00:00
format-strings-system.h
format-strings-utf8.m
forward-class-1.m
forward-class-receiver.m
forward-class-redeclare.m
forward-protocol-incomplete-impl-warn.m
gc-attributes.m Recommit r359859 "[Attribute/Diagnostics] Print macro if definition is an attribute declaration" 2019-05-07 03:20:17 +00:00
gcc-cast-ext.m
generic-selection.m
getter-setter-defined-in-category-of-parent.m
ibaction.m
iboutlet.m
iboutletcollection-attr.m
id.m
id_builtin.m
idiomatic-parentheses.m
ignore-qualifier-on-qualified-id.m
ignore-weakimport-method.m
illegal-nonarc-bridged-cast.m
incompatible-protocol-qualified-types.m
incomplete-implementation.m [Sema] Emit -Wincomplete-implementation for partial methods. 2018-07-07 01:50:20 +00:00
infer-availability-from-init.m [SemaObjC] Don't infer the availabilty of +new from -init if the receiver has Class type 2019-02-04 23:30:57 +00:00
inst-method-lookup-in-root.m
instancetype.m
integer-overflow.m [Sema] Emit -Winteger-overflow for arguments in function calls, ObjC messages. 2018-03-27 21:29:05 +00:00
interface-1.m
interface-layout-2.m
interface-layout.m
interface-scope-2.m
interface-scope.m
interface-tu-variable.m
invalid-code.m
invalid-objc-decls-1.m
invalid-receiver.m
invalid-typename.m [ObjC] Improve error message for a malformed objc-type-name 2019-06-26 23:39:23 +00:00
ivar-access-package.m
ivar-access-tests.m
ivar-in-class-extension-error.m
ivar-in-class-extension.m
ivar-in-implementations.m
ivar-lookup-resolution-builtin.m
ivar-lookup.m
ivar-ref-misuse.m
ivar-sem-check-1.m
ivar-sem-check-2.m
kindof.m [ObjC generics] Fix applying `__kindof` to the type parameter. 2019-02-16 01:01:08 +00:00
legacy-implementation-1.m
message.m
method-arg-qualifier-warning.m
method-attributes.m
method-bad-param.m
method-conflict-1.m
method-conflict-2.m
method-conflict.m
method-def-1.m
method-def-2.m
method-encoding-2.m
method-in-class-extension-impl.m
method-lookup-2.m
method-lookup-3.m
method-lookup-4.m
method-lookup-5.m
method-lookup.m
method-no-context.m
method-not-defined.m
method-prototype-scope.m
method-redecls-invalid-interface.m
method-sentinel-attr.m
method-typecheck-1.m
method-typecheck-2.m
method-typecheck-3.m
method-undef-category-warn-1.m
method-undef-extension-warn-1.m
method-undefined-warn-1.m
method-unused-attribute.m [Sema][ObjC] Disable -Wunused-parameter for ObjC methods 2019-05-03 07:19:46 +00:00
method-warn-unused-attribute.m
mismatched-undefined-method.m
missing-atend-metadata.m
missing-method-context.m
missing-method-return-type.m
mrc-no-weak.m
mrc-weak.m Fix for the greendragon bots. 2019-05-08 05:59:25 +00:00
multiple-method-names-in-class-self.m [ObjC] Messages to 'self' in class methods that return 'instancetype' should 2018-12-20 22:11:11 +00:00
multiple-method-names.m
multiple-property-deprecated-decl.m
narrow-property-type-in-cont-class.m
nested-typedef-decl.m
newproperty-class-method-1.m
no-gc-weak-test.m
no-ivar-access-control.m
no-ivar-in-interface-block.m
no-objc-exceptions.m
no-protocol-option-tests.m
no-warn-qual-mismatch.m
no-warn-synth-protocol-meth.m
no-warn-unimpl-method.m
no-warning-unavail-unimp.m
non-trivial-c-union.m [Sema][ObjC] Mark C union fields that have non-trivial ObjC ownership 2019-09-07 00:34:47 +00:00
nonnull.h
nonnull.m [Sema] Fix a use-after-free of a _Nonnull ParsedAttr 2019-03-14 18:38:02 +00:00
nowarn-superclass-method-mismatch.m
ns-consumed-error-not-warning.m
ns_returns_retained_block_return.m
nsobject-attribute-1.m
nsobject-attribute.m
nullability-arc.m
nullability.m Append new attributes to the end of an AttributeList. 2018-08-03 01:21:16 +00:00
nullability_macro.m Remove unicode character from test 2019-05-21 20:12:00 +00:00
nullable-weak-property.m
objc-array-literal.m
objc-asm-attribute-neg-test.m Add support for attributes on @implementations in Objective-C 2019-04-11 17:55:30 +00:00
objc-boxed-expressions-nsvalue.m
objc-buffered-methods.m
objc-cf-audited-warning.m
objc-class-property.m
objc-container-subscripting-1.m
objc-container-subscripting-2.m
objc-container-subscripting-3.m
objc-container-subscripting-attr.m
objc-container-subscripting.m
objc-cstyle-args-in-methods.m
objc-dictionary-literal.m
objc-independent-class-attribute.m
objc-literal-comparison.m
objc-literal-nsnumber.m
objc-literal-sig.m [ObjC] Emit a boxed expression as a compile-time constant if the 2019-03-08 04:45:37 +00:00
objc-mixed-bridge-attribute.m
objc-qualified-property-lookup.m
objc-string-constant.m
objc2-merge-gc-attribue-decl.m
objc2-warn-weak-decl.m
objcbridge-attribute-arc.m
objcbridge-attribute.m
objcbridge-related-attribute.m
objcbridgemutable-attribute.m
opaque-is-access-warn.m
opaque-is-access.m
override-nullability.m
overriding-property-in-class-extension.m
ovl-check.m
parameterized_classes.m
parameterized_classes_arc.m
parameterized_classes_collection_literal.m
parameterized_classes_subst.m Revert r374202"[ObjC generics] Fix not inheriting type bounds in categories/extensions." 2019-10-22 22:39:01 +02:00
pedantic-dynamic-test.m
pragma-pack.m
property-2.m
property-3.m
property-4.m
property-5.m
property-6.m
property-7.m
property-8.m
property-9-impl-method.m
property-9.m
property-10.m Remove GC-related warning terminology 2018-04-17 04:25:18 +00:00
property-11.m
property-12.m
property-13.m
property-ambiguous-synthesis.m
property-and-class-extension.m
property-and-ivar-use.m
property-assign-on-object-type.m Add -Wobjc-property-assign-on-object-type. 2018-09-05 19:02:00 +00:00
property-atomic-redecl.m
property-category-1.m
property-category-2.m
property-category-3.m
property-category-4.m
property-category-impl.m
property-choose-expr.m
property-deprecated-warning.m Improve a -Wunguarded-availability note 2019-01-14 19:17:31 +00:00
property-dot-receiver.m
property-error-readonly-assign.m
property-expression-error.m
property-impl-misuse.m
property-implement-readonly-with-custom-setter.m
property-in-class-extension-1.m Add -Wobjc-property-assign-on-object-type. 2018-09-05 19:02:00 +00:00
property-in-class-extension.m
property-inherited.m
property-ivar-mismatch.m Fix typos in clang 2018-04-06 15:14:32 +00:00
property-lookup-in-id.m
property-method-lookup-impl.m
property-missing.m
property-nonfragile-abi.m
property-noninherited-availability-attr.m
property-noprotocol-warning.m
property-not-lvalue.m
property-ns-returns-not-retained-attr.m
property-ownership-attr.m
property-redundant-decl-accessor.m
property-typecheck-1.m
property-user-setter.m
property-weak.m
property.m Remove GC-related warning terminology 2018-04-17 04:25:18 +00:00
props-on-prots.m
protocol-archane.m
protocol-attribute.m
protocol-expr-1.m
protocol-expr-neg-1.m [ObjC] Error out when using forward-declared protocol in a @protocol 2018-08-17 22:18:08 +00:00
protocol-id-test-1.m
protocol-id-test-2.m
protocol-id-test-3.m
protocol-implementation-inherited.m
protocol-implementing-class-methods.m
protocol-lookup-2.m
protocol-lookup.m
protocol-qualified-class-unsupported.m
protocol-typecheck.m
protocol-warn.m
protocols-suppress-conformance.m
protocols.m
provisional-ivar-lookup.m
qualified-protocol-method-conflicts.m
rdar6248119.m
rdr-6211479-array-property.m
receiver-forward-class.m
related-result-type-inference.m
resolve-method-in-global-pool.m
restrict-id-type.m
return.m
scope-check.m Reapply "[Parse] Use CapturedStmt for @finally on MSVC" 2018-06-08 00:30:00 +00:00
selector-1.m
selector-2.m
selector-3.m
selector-4.m
selector-error.m
selector-overload.m
self-assign.m
self-comparison.m
self-declared-in-block.m
self-in-function.m
setter-dotsyntax.m
severe-syntax-error.m
sign-conversion.m
signed-char-bool-conversion.m [Sema] Split of versions of -Wimplicit-{float,int}-conversion for Objective-C BOOL 2019-09-17 21:11:51 +00:00
sizeof-interface.m
special-dep-unavail-warning.m
stand-alone-implementation.m
static-ivar-ref-1.m
stmts.m
string.m
strong-in-c-struct.m
subclassing-restricted-attr.m
super-cat-prot.m
super-class-protocol-conformance.m
super-dealloc-attribute.m
super-property-message-expr.m
super-property-notation.m
super.m
suspicious-pragma-pack.m
synchronized.m
synth-provisional-ivars-1.m
synth-provisional-ivars.m
synthesize-setter-contclass.m
synthesized-ivar.m
tentative-property-decl.m
transfer-boxed-string-nullability.m [ObjC] Emit a boxed expression as a compile-time constant if the 2019-03-08 04:45:37 +00:00
transparent-union.m
try-catch.m
typedef-class.m
typo-correction-arc.m
typo-correction-subscript.m [Sema] Emit diagnostics for uncorrected delayed typos at the end of TU 2019-10-09 10:00:05 +00:00
typo-correction.m
ucn-objc-string.m
undeclared-selector.m
undef-arg-super-method-call.m
undef-class-messagin-error.m
undef-class-property-error.m
undef-protocol-methods-1.m
undef-superclass-1.m
undefined-protocol-type-1.m
unguarded-availability-category-protocol-use.m
unguarded-availability-new.m Improve a -Wunguarded-availability note 2019-01-14 19:17:31 +00:00
unguarded-availability.m Improve a -Wunguarded-availability note 2019-01-14 19:17:31 +00:00
unimplemented-protocol-prop.m
uninit-variables.m
unknown-anytype.m
unqualified-to-qualified-class-warn.m
unsafe-perform-selector.m
unused-backing-ivar-warning.m
unused.m [Sema][ObjC] Disable -Wunused-parameter for ObjC methods 2019-05-03 07:19:46 +00:00
va-method-1.m
warn-assign-property-nscopying.m
warn-cast-of-sel-expr.m
warn-category-method-deprecated.m
warn-deprecated-implementations.m
warn-direct-ivar-access.m
warn-explicit-call-initialize.m
warn-forward-class-attr-deprecated.m
warn-implicit-atomic-property.m
warn-incompatible-builtin-types.m
warn-loop-analysis.m
warn-messaging-id.mm
warn-missing-super.m
warn-nontrivial-struct-memaccess.m [Sema] Warn about memcpy'ing non-trivial C structs. 2018-04-17 19:13:41 +00:00
warn-protocol-method-deprecated.m
warn-retain-block-property.m
warn-retain-cycle.m
warn-selector-selection.m
warn-strict-selector-match.m
warn-superclass-method-mismatch.m
warn-thread-safety-analysis.m
warn-unreachable.m
warn-unused-exception-param.m
warn-weak-field.m
warn-write-strings.m
warning-missing-selector-name.m
weak-attr-ivar.m
weak-property.m
writable-property-in-superclass.m
x86-method-vector-values.m