@@ -1942,14 +1942,25 @@ swift_getTypeByMangledNameInEnvironment(
1942
1942
const void * const *genericArgs) {
1943
1943
llvm::StringRef typeName (typeNameStart, typeNameLength);
1944
1944
SubstGenericParametersFromMetadata substitutions (environment, genericArgs);
1945
- return swift_getTypeByMangledName (MetadataState::Complete, typeName,
1945
+ TypeLookupErrorOr<TypeInfo> result = swift_getTypeByMangledName (
1946
+ MetadataState::Complete, typeName,
1946
1947
genericArgs,
1947
1948
[&substitutions](unsigned depth, unsigned index) {
1948
1949
return substitutions.getMetadata (depth, index);
1949
1950
},
1950
1951
[&substitutions](const Metadata *type, unsigned index) {
1951
1952
return substitutions.getWitnessTable (type, index);
1952
- }).getType ().getMetadata ();
1953
+ });
1954
+ if (result.isError ()) {
1955
+ TypeLookupError *error = result.getError ();
1956
+ char *errorString = error->copyErrorString ();
1957
+ swift::warning (0 , " failed type lookup for %.*s: %s\n " ,
1958
+ (int )typeNameLength, typeNameStart,
1959
+ errorString);
1960
+ error->freeErrorString (errorString);
1961
+ return nullptr ;
1962
+ }
1963
+ return result.getType ().getMetadata ();
1953
1964
}
1954
1965
1955
1966
SWIFT_CC (swift) SWIFT_RUNTIME_EXPORT
@@ -1962,14 +1973,25 @@ swift_getTypeByMangledNameInEnvironmentInMetadataState(
1962
1973
const void * const *genericArgs) {
1963
1974
llvm::StringRef typeName (typeNameStart, typeNameLength);
1964
1975
SubstGenericParametersFromMetadata substitutions (environment, genericArgs);
1965
- return swift_getTypeByMangledName ((MetadataState)metadataState, typeName,
1976
+ TypeLookupErrorOr<TypeInfo> result = swift_getTypeByMangledName (
1977
+ (MetadataState)metadataState, typeName,
1966
1978
genericArgs,
1967
1979
[&substitutions](unsigned depth, unsigned index) {
1968
1980
return substitutions.getMetadata (depth, index);
1969
1981
},
1970
1982
[&substitutions](const Metadata *type, unsigned index) {
1971
1983
return substitutions.getWitnessTable (type, index);
1972
- }).getType ().getMetadata ();
1984
+ });
1985
+ if (result.isError ()) {
1986
+ TypeLookupError *error = result.getError ();
1987
+ char *errorString = error->copyErrorString ();
1988
+ swift::warning (0 , " failed type lookup for %.*s: %s\n " ,
1989
+ (int )typeNameLength, typeNameStart,
1990
+ errorString);
1991
+ error->freeErrorString (errorString);
1992
+ return nullptr ;
1993
+ }
1994
+ return result.getType ().getMetadata ();
1973
1995
}
1974
1996
1975
1997
SWIFT_CC (swift) SWIFT_RUNTIME_EXPORT
@@ -1981,14 +2003,25 @@ swift_getTypeByMangledNameInContext(
1981
2003
const void * const *genericArgs) {
1982
2004
llvm::StringRef typeName (typeNameStart, typeNameLength);
1983
2005
SubstGenericParametersFromMetadata substitutions (context, genericArgs);
1984
- return swift_getTypeByMangledName (MetadataState::Complete, typeName,
2006
+ TypeLookupErrorOr<TypeInfo> result = swift_getTypeByMangledName (
2007
+ MetadataState::Complete, typeName,
1985
2008
genericArgs,
1986
2009
[&substitutions](unsigned depth, unsigned index) {
1987
2010
return substitutions.getMetadata (depth, index);
1988
2011
},
1989
2012
[&substitutions](const Metadata *type, unsigned index) {
1990
2013
return substitutions.getWitnessTable (type, index);
1991
- }).getType ().getMetadata ();
2014
+ });
2015
+ if (result.isError ()) {
2016
+ TypeLookupError *error = result.getError ();
2017
+ char *errorString = error->copyErrorString ();
2018
+ swift::warning (0 , " failed type lookup for %.*s: %s\n " ,
2019
+ (int )typeNameLength, typeNameStart,
2020
+ errorString);
2021
+ error->freeErrorString (errorString);
2022
+ return nullptr ;
2023
+ }
2024
+ return result.getType ().getMetadata ();
1992
2025
}
1993
2026
1994
2027
SWIFT_CC (swift) SWIFT_RUNTIME_EXPORT
@@ -2001,14 +2034,26 @@ swift_getTypeByMangledNameInContextInMetadataState(
2001
2034
const void * const *genericArgs) {
2002
2035
llvm::StringRef typeName (typeNameStart, typeNameLength);
2003
2036
SubstGenericParametersFromMetadata substitutions (context, genericArgs);
2004
- return swift_getTypeByMangledName ((MetadataState)metadataState, typeName,
2037
+ TypeLookupErrorOr<TypeInfo> result = swift_getTypeByMangledName (
2038
+ (MetadataState)metadataState, typeName,
2005
2039
genericArgs,
2006
2040
[&substitutions](unsigned depth, unsigned index) {
2007
2041
return substitutions.getMetadata (depth, index);
2008
2042
},
2009
2043
[&substitutions](const Metadata *type, unsigned index) {
2010
2044
return substitutions.getWitnessTable (type, index);
2011
- }).getType ().getMetadata ();
2045
+ });
2046
+ if (result.isError ()) {
2047
+ TypeLookupError *error = result.getError ();
2048
+ char *errorString = error->copyErrorString ();
2049
+ swift::warning (0 , " failed type lookup for %.*s: %s\n " ,
2050
+ (int )typeNameLength, typeNameStart,
2051
+ errorString);
2052
+ error->freeErrorString (errorString);
2053
+ return nullptr ;
2054
+ }
2055
+ return result.getType ().getMetadata ();
2056
+
2012
2057
}
2013
2058
2014
2059
// / Demangle a mangled name, but don't allow symbolic references.
0 commit comments