Report lexer issues through error reporter.

This commit is contained in:
Jeff Young 2020-10-16 00:38:33 +01:00
parent 4b436fa573
commit 834c7bbe05
4 changed files with 21 additions and 17 deletions

View File

@ -671,7 +671,8 @@ L_read:
// L_unterminated:
wxString errtxt( _( "Un-terminated delimited string" ) );
THROW_PARSE_ERROR( errtxt, CurSource(), CurLine(), CurLineNumber(), CurOffset() );
THROW_PARSE_ERROR( errtxt, CurSource(), CurLine(), CurLineNumber(),
cur - start + curText.length() );
}
}

View File

@ -70,6 +70,8 @@ void PARSE_ERROR::init( const wxString& aProblem, const char* aThrowersFile,
const wxString& aSource, const char* aInputLine, int aLineNumber,
int aByteIndex )
{
parseProblem = aProblem;
problem.Printf( _( "%s in \"%s\", line %d, offset %d" ),
aProblem,
aSource,

View File

@ -154,8 +154,17 @@ struct PARSE_ERROR : public IO_ERROR
~PARSE_ERROR() throw () {}
const wxString ParseProblem() { return parseProblem; }
protected:
PARSE_ERROR(): IO_ERROR(), lineNumber( 0 ), byteIndex( 0 ) {}
PARSE_ERROR() :
IO_ERROR(),
lineNumber( 0 ),
byteIndex( 0 )
{}
protected:
wxString parseProblem;
};

View File

@ -336,7 +336,13 @@ void PANEL_SETUP_RULES::OnCompile( wxCommandEvent& event )
}
catch( PARSE_ERROR& pe )
{
m_Parent->SetError( pe.What(), this, m_textEditor, pe.lineNumber, pe.byteIndex );
wxString msg = wxString::Format( _( "ERROR: <a href='%d:%d'>%s</a>%s" ),
pe.lineNumber,
pe.byteIndex,
pe.ParseProblem(),
wxEmptyString );
m_errorsReport->Report( msg, RPT_SEVERITY_ERROR );
}
m_errorsReport->Flush();
@ -404,20 +410,6 @@ bool PANEL_SETUP_RULES::TransferDataFromWindow()
if( m_frame->Prj().IsNullProject() )
return true;
try
{
std::vector<DRC_RULE*> dummyRules;
DRC_RULES_PARSER parser( m_textEditor->GetText(), _( "DRC rules" ) );
parser.Parse( dummyRules, m_errorsReport );
}
catch( PARSE_ERROR& pe )
{
m_Parent->SetError( pe.What(), this, m_textEditor, pe.lineNumber, pe.byteIndex );
return false;
}
wxString rulesFilepath = m_frame->GetDesignRulesPath();
try