Fix `in` operator for targets

`DefaultInfo in target` should always return `true` for any target.

PiperOrigin-RevId: 153166669
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/AbstractConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/analysis/AbstractConfiguredTarget.java
index b522bce..acaa4a8 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/AbstractConfiguredTarget.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/AbstractConfiguredTarget.java
@@ -149,15 +149,7 @@
           "Type Target only supports querying by object constructors, got %s instead",
           EvalUtils.getDataTypeName(key)));
     }
-    ClassObjectConstructor constructor = (ClassObjectConstructor) key;
-    SkylarkProviders provider = getProvider(SkylarkProviders.class);
-    if (provider != null) {
-      Object declaredProvider = provider.getDeclaredProvider(constructor.getKey());
-      if (declaredProvider != null) {
-        return true;
-      }
-    }
-    return false;
+    return get(((ClassObjectConstructor) key).getKey()) != null;
   }
 
   @Override
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java
index 0d4f74f..8c4be30 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java
@@ -867,6 +867,7 @@
         "def _impl(ctx):",
         "    provider = ctx.attr.deps[0][DefaultInfo]",
         "    return struct(",
+        "        is_provided = DefaultInfo in ctx.attr.deps[0],",
         "        provider = provider,",
         "        dir = str(sorted(dir(provider))),",
         "        rule_data_runfiles = provider.data_runfiles,",
@@ -889,6 +890,8 @@
     ConfiguredTarget configuredTarget = getConfiguredTarget("//test:my_rule");
     SkylarkProviders providers = configuredTarget.getProvider(SkylarkProviders.class);
 
+    assertThat((Boolean) providers.getValue("is_provided")).isTrue();
+
     Object provider = providers.getValue("provider");
     assertThat(provider).isInstanceOf(DefaultProvider.class);
     assertThat(((DefaultProvider) provider).getConstructor().getPrintableName())
@@ -925,6 +928,7 @@
         "def _impl(ctx):",
         "    provider = ctx.attr.deps[0][DefaultInfo]",
         "    return struct(",
+        "        is_provided = DefaultInfo in ctx.attr.deps[0],",
         "        provider = provider,",
         "        dir = str(sorted(dir(provider))),",
         "        file_data_runfiles = provider.data_runfiles,",
@@ -945,6 +949,8 @@
     ConfiguredTarget configuredTarget = getConfiguredTarget("//test:my_rule");
     SkylarkProviders providers = configuredTarget.getProvider(SkylarkProviders.class);
 
+    assertThat((Boolean) providers.getValue("is_provided")).isTrue();
+
     Object provider = providers.getValue("provider");
     assertThat(provider).isInstanceOf(DefaultProvider.class);
     assertThat(((DefaultProvider) provider).getConstructor().getPrintableName())