Merge pull request #12500 from xedin/fn-metadata-changes

[IRGen] Improvements to function type metadata
This commit is contained in:
Pavel Yaskevich
2017-11-06 19:50:19 -08:00
committed by GitHub
16 changed files with 625 additions and 264 deletions

View File

@@ -1920,12 +1920,18 @@ static bool _dynamicCastToFunction(OpaqueValue *dest,
// The result and argument types must match.
if (srcFn->ResultType != targetFn->ResultType)
return _fail(src, srcType, targetType, flags);
if (srcFn->getNumArguments() != targetFn->getNumArguments())
if (srcFn->getNumParameters() != targetFn->getNumParameters())
return _fail(src, srcType, targetType, flags);
for (unsigned i = 0, e = srcFn->getNumArguments(); i < e; ++i)
if (srcFn->getArguments()[i] != targetFn->getArguments()[i])
if (srcFn->hasParameterFlags() != targetFn->hasParameterFlags())
return _fail(src, srcType, targetType, flags);
for (unsigned i = 0, e = srcFn->getNumParameters(); i < e; ++i) {
if (srcFn->getParameters()[i] != targetFn->getParameters()[i] ||
srcFn->getParameterFlags(i) != targetFn->getParameterFlags(i))
return _fail(src, srcType, targetType, flags);
}
return _succeed(dest, src, srcType, flags);
}