Marcus Rueckert, Jeremy Hinegardner, Aaron Campbell, Josh Purinton,
Judson Lester, Barry Arthur, Tim Potter, Ryan Phelps, David Waite,
Kenny MacDermid, MenTaLguY, Manoj Rajagopalan, Tim Chklovski,
- Mikkel Fahnøe Jørgensen, Andrei Polushin, Evan Phoenix, David Balmain
+ Mikkel Fahnøe Jørgensen, Andrei Polushin, Evan Phoenix, David Balmain,
+ Ross Thomas
/* Resolve, pass action for local search. */
NameInst *target = resolveStateRef( *item->nameRef, item->loc, action );
- /* Check if the target goes into a longest match. */
- NameInst *search = target->parent;
- while ( search != 0 ) {
- if ( search->isLongestMatch ) {
- error(item->loc) << "cannot enter inside a longest "
- "match construction as an entry point" << endl;
- break;
+ /* Name lookup error reporting is handled by resolveStateRef. */
+ if ( target != 0 ) {
+ /* Check if the target goes into a longest match. */
+ NameInst *search = target->parent;
+ while ( search != 0 ) {
+ if ( search->isLongestMatch ) {
+ error(item->loc) << "cannot enter inside a longest "
+ "match construction as an entry point" << endl;
+ break;
+ }
+ search = search->parent;
}
- search = search->parent;
- }
- /* Note the reference in the name. This will cause the entry
- * point to survive to the end of the graph generating walk. */
- if ( target != 0 )
+ /* Record the reference in the name. This will cause the
+ * entry point to survive to the end of the graph
+ * generating walk. */
target->numRefs += 1;
+ }
+
item->nameTarg = target;
break;
}