The following line contains semicolon instead of comma.
compose(p("Background";"Cut Edges","Lines","Style"),s(1,"Dashed","~ (Pen & Screen)")).
The output of the simplified error report:
The simplified code is:
Code: Select all
predicates
% 2013.12.09. Display descriptor of consulting error.
displayError:(string Property, string FileName, exception::descriptor) procedure.
clauses
% 2013.12.09. Display descriptor of consulting error.
displayError(Property,FileName,Descriptor) :-
stdio::writef("%-12.12s %s","Property","File Name"),
stdio::nl,
stdio::writef("%-12.12s %s",Property,FileName),
stdio::nl,
Descriptor=exception::descriptor(_ClassInfo1,
exception::exceptionDescriptor(_ClassInfo2,
_PredicateName, _Description),
_Kind,ExtraInfo,_GMTTime,ExceptionDescription,
_ThreadId),
stdio::writef("%-12.12s %s","Message:", ExceptionDescription),
stdio::nl,
foreach list::getMember_nd(ExtraInfo) = namedValue(ExtraName,ExtraValue),
string::frontToken(toString(ExtraValue),_,Rest),
Body=string::trySubString(Rest,1,string::length(Rest)-2) do
stdio::writef("%-12.12s %s",ExtraName,Body),
stdio::nl
end foreach,
stdio::nl.
I could filter out the duplicate contents of the errorDescription structure.
The position of the error within the file is hidden in the hidden source of string_native::vpiCore_consult.
This is a step back compared to the old consulterror predicate.
The advantage of the new consult is the possibility of comments and some extra spaces and empty lines among the terms:
% Test of consulting
compose(p("Picture","Frame","Lines","Style"), s(1,"Solid","Pen")).
The old one was very strict.