tcresolvemultierrors.pas 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. unit TCResolveMultiErrors;
  2. {$mode objfpc}{$H+}
  3. interface
  4. uses
  5. Classes, SysUtils, testregistry, tcresolver, PParser,
  6. PScanner;
  7. type
  8. { TTestResolveMultiErrors }
  9. TTestResolveMultiErrors = Class(TCustomTestResolver)
  10. protected
  11. procedure SetUp; override;
  12. procedure OnParserError(Sender: TObject; const aContext: TRecoveryContext;
  13. var aAllowRecovery: Boolean); virtual;
  14. Published
  15. procedure TestStatements_IdentifiersNotFound;
  16. end;
  17. implementation
  18. { TTestResolveMultiErrors }
  19. procedure TTestResolveMultiErrors.OnParserError(Sender: TObject;
  20. const aContext: TRecoveryContext; var aAllowRecovery: Boolean);
  21. {$IFDEF VerbosePasResolver}
  22. var
  23. aParser: TPasParser;
  24. {$ENDIF}
  25. begin
  26. if Sender=nil then exit;
  27. if aContext.Error=nil then ;
  28. if aAllowRecovery then ;
  29. {$IFDEF VerbosePasResolver}
  30. aParser:=Sender as TPasParser;
  31. writeln('TTestResolveMultiErrors.OnParserError ',aParser.LastMsgType,' (',aParser.LastMsgNumber,') Msg="',aParser.LastMsg,'"');
  32. {$ENDIF}
  33. end;
  34. procedure TTestResolveMultiErrors.SetUp;
  35. begin
  36. inherited SetUp;
  37. Parser.MaxErrorCount:=100;
  38. Parser.OnError:=@OnParserError;
  39. end;
  40. procedure TTestResolveMultiErrors.TestStatements_IdentifiersNotFound;
  41. begin
  42. StartProgram(false);
  43. Add('begin');
  44. //Add(' a:=3;');
  45. //Add(' b;');
  46. ParseProgram;
  47. end;
  48. initialization
  49. RegisterTests([TTestResolveMultiErrors]);
  50. end.