Index: tools/clang/blink_gc_plugin/CheckFieldsVisitor.cpp |
diff --git a/tools/clang/blink_gc_plugin/CheckFieldsVisitor.cpp b/tools/clang/blink_gc_plugin/CheckFieldsVisitor.cpp |
index 0ed953fccf92e57197fcb7cc54a99bff36b8a675..558637c9c190b5489e0ddccf37b0c62f921568af 100644 |
--- a/tools/clang/blink_gc_plugin/CheckFieldsVisitor.cpp |
+++ b/tools/clang/blink_gc_plugin/CheckFieldsVisitor.cpp |
@@ -107,7 +107,13 @@ void CheckFieldsVisitor::AtValue(Value* edge) { |
return; |
} |
- if (Parent()->IsRawPtr() || Parent()->IsRefPtr() || Parent()->IsOwnPtr()) { |
+ if (Parent()->IsRawPtr() || Parent()->IsOwnPtr()) { |
+ invalid_fields_.push_back(std::make_pair( |
+ current_, InvalidSmartPtr(Parent()))); |
+ return; |
+ } |
+ |
+ if (Parent()->IsRefPtr() && !edge->value()->IsGCRefCounted()) { |
invalid_fields_.push_back(std::make_pair( |
current_, InvalidSmartPtr(Parent()))); |
return; |