No Such Field
rascal-0.40.17
Synopsis
Field of an abstract data type value cannot be found at runtime.
Types
data RuntimeException = NoSuchField(str name);
Usage
import Exception;
(only needed when NoSuchField
is used in catch
)
Description
Selecting a field from an abstract datatype depends on the actual constructor being used at run time. This exception is thrown when a non-existent field is accessed.
Examples
Consider this simplified model of lawful entities:
rascal>data Entity = person(str name, int birthYear) | company(str name, Entity director);
ok
rascal>jane = person("Jane", 2001);
Entity: person("Jane",2001)
rascal>icm = company("ICM", jane);
Entity: company(
"ICM",
person("Jane",2001))
The field birthYear
is evidently only applicable to a person
but not to a company
rascal>icm.birthYear;
|prompt:///|(0,3,<1,0>,<1,3>): NoSuchField("birthYear")
ok
rascal>jane.birthYear;
int: 2001