Revert "Fix an assertion triggered when using anonymous structs in kernel"
This reverts commit 3f9d0db0d0c841327dbcefe3f2c032ea449d6973.
diff --git a/slang_rs_export_foreach.cpp b/slang_rs_export_foreach.cpp
index 6423e53..213154d 100644
--- a/slang_rs_export_foreach.cpp
+++ b/slang_rs_export_foreach.cpp
@@ -525,40 +525,27 @@
}
}
- // Construct type information about inputs and outputs. Return null when
- // there is an error exporting types.
-
- bool TypeExportError = false;
-
if (FE->hasIns()) {
+
for (InIter BI = FE->mIns.begin(), EI = FE->mIns.end(); BI != EI; BI++) {
const clang::Type *T = (*BI)->getType().getCanonicalType().getTypePtr();
RSExportType *InExportType = RSExportType::Create(Context, T);
- if (!InExportType) {
- TypeExportError = true;
+ if (FE->mIsKernelStyle) {
+ slangAssert(InExportType != nullptr);
}
FE->mInTypes.push_back(InExportType);
}
}
- const clang::Type *OutType = nullptr;
if (FE->mIsKernelStyle && FE->mHasReturnType) {
- OutType = FE->mResultType.getTypePtr();
+ const clang::Type *T = FE->mResultType.getTypePtr();
+ FE->mOutType = RSExportType::Create(Context, T);
+ slangAssert(FE->mOutType);
} else if (FE->mOut) {
- OutType = FE->mOut->getType().getCanonicalType().getTypePtr();
- }
-
- if (OutType) {
- FE->mOutType = RSExportType::Create(Context, OutType);
- TypeExportError |= !FE->mOutType;
- }
-
- if (TypeExportError) {
- slangAssert(Context->getDiagnostics()->hasErrorOccurred() &&
- "Error exporting type but no diagnostic message issued!");
- return nullptr;
+ const clang::Type *T = FE->mOut->getType().getCanonicalType().getTypePtr();
+ FE->mOutType = RSExportType::Create(Context, T);
}
return FE;
diff --git a/tests/F_anon_struct_kernel_sig/anon_struct_kernel_sig.rs b/tests/F_anon_struct_kernel_sig/anon_struct_kernel_sig.rs
deleted file mode 100644
index 028a328..0000000
--- a/tests/F_anon_struct_kernel_sig/anon_struct_kernel_sig.rs
+++ /dev/null
@@ -1,21 +0,0 @@
-#pragma version(1)
-#pragma rs java_package_name(foo)
-
-typedef struct {
- int i;
-} myStruct;
-
-/* Test old-style kernel */
-void root(const myStruct *in, int *out) {
- *out = in->i;
-}
-
-/* Test new-style kernel */
-myStruct RS_KERNEL kernel_returning_myStruct(int in) {
- myStruct out = { in };
- return out;
-}
-
-int RS_KERNEL kernel_with_myStruct_param(myStruct in) {
- return in.i;
-}
diff --git a/tests/F_anon_struct_kernel_sig/stderr.txt.expect b/tests/F_anon_struct_kernel_sig/stderr.txt.expect
deleted file mode 100644
index 276aaaf..0000000
--- a/tests/F_anon_struct_kernel_sig/stderr.txt.expect
+++ /dev/null
@@ -1 +0,0 @@
-anon_struct_kernel_sig.rs:4:9: error: anonymous structures cannot be exported
diff --git a/tests/F_anon_struct_kernel_sig/stdout.txt.expect b/tests/F_anon_struct_kernel_sig/stdout.txt.expect
deleted file mode 100644
index e69de29..0000000
--- a/tests/F_anon_struct_kernel_sig/stdout.txt.expect
+++ /dev/null