Record parent rule for DRC assertions.
(Particularly important if the rule specified a severity.) Also fixes a bug looking up LSET layer names in the GetStandardLayerNames array (which aren't the same). https://forum.kicad.info/t/a-few-questions-about-custom-rules-syntax/40068/7
This commit is contained in:
parent
4eddc7131d
commit
03c2850c59
|
@ -241,6 +241,7 @@ void DRC_TEST_PROVIDER_MISC::testAssertions()
|
|||
drcItem->SetErrorMessage( drcItem->GetErrorText() + wxS( " (" )
|
||||
+ c->GetName() + wxS( ")" ) );
|
||||
drcItem->SetItems( item );
|
||||
drcItem->SetViolatingRule( c->GetParentRule() );
|
||||
|
||||
reportViolation( drcItem, item->GetPosition(), item->GetLayer() );
|
||||
} );
|
||||
|
|
|
@ -127,13 +127,18 @@ LIBEVAL::VALUE* PCB_EXPR_VAR_REF::GetValue( LIBEVAL::CONTEXT* aCtx )
|
|||
else
|
||||
{
|
||||
const wxAny& any = item->Get( it->second );
|
||||
bool valid = any.GetAs<wxString>( &str );
|
||||
PCB_LAYER_ID layer;
|
||||
|
||||
if( valid )
|
||||
if( it->second->Name() == wxT( "Layer" ) )
|
||||
{
|
||||
if( it->second->Name() == wxT( "Layer" ) )
|
||||
if( any.GetAs<PCB_LAYER_ID>( &layer ) )
|
||||
return new PCB_LAYER_VALUE( layer );
|
||||
else if( any.GetAs<wxString>( &str ) )
|
||||
return new PCB_LAYER_VALUE( context->GetBoard()->GetLayerID( str ) );
|
||||
else
|
||||
}
|
||||
else
|
||||
{
|
||||
if( any.GetAs<wxString>( &str ) )
|
||||
return new LIBEVAL::VALUE( str );
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue