private IEnumerable <VerificationResult> VerifyType(EcmaModule module, TypeDefinitionHandle typeHandle) { var builder = new ArrayBuilder <VerificationResult>(); try { TypeVerifier typeVerifier = new TypeVerifier(module, typeHandle, _typeSystemContext, _verifierOptions); typeVerifier.ReportVerificationError = (code, args) => { builder.Add(new VerificationResult() { Code = code, Message = $"[MD]: Error: {_stringResourceManager.Value.GetString(code.ToString(), CultureInfo.InvariantCulture)}", Args = args }); }; typeVerifier.Verify(); } catch (BadImageFormatException) { builder.Add(new VerificationResult() { Type = typeHandle, Message = "Unable to resolve token" }); } catch (NotImplementedException e) { reportException(e); } catch (InvalidProgramException e) { reportException(e); } catch (PlatformNotSupportedException e) { reportException(e); } catch (VerifierException e) { reportException(e); } catch (TypeSystemException e) { reportException(e); } return(builder.ToArray()); void reportException(Exception e) { builder.Add(new VerificationResult() { Type = typeHandle, Message = e.Message }); } }
private DeclareExpression(IParser parser, IEnumerable <IToken> tokens, ref IParseError parseError) { this.tokens = tokens; IToken keyword, var_name, var_type, end; int count = F.count <IToken>(tokens); if (count == 4) // declare name type end { keyword = F.first <IToken>(tokens); IEnumerable <IToken> rest = F.rest <IToken>(tokens); var_name = F.first <IToken>(rest); rest = F.rest <IToken>(rest); var_type = F.first <IToken>(rest); rest = F.rest <IToken>(rest); end = F.first <IToken>(rest); Collision collision = Collision._none; if (VariableVerifier.Verify(var_name.Info, parser.Keywords, parser.Types, parser.Variables, ref collision)) { if (TypeVerifier.Verify(var_type.Info, parser.Keywords, parser.Types, parser.Variables, ref collision)) { } else { tokenError("type", ref parseError, collision); } } else { tokenError("variable", ref parseError, collision); } } }