Beispiel #1
0
static void setMsgLocation      // SET LOCATION FOR MESSAGE
    ( CTX context )             // - current context
{
    switch( context ) {
      case CTX_FINI :
      case CTX_FUNC_GEN :
      case CTX_CG_FUNC :
      case CTX_CG_OPT :
      case CTX_ENDFILE :
        if( CompFlags.ew_switch_used ) {
      // drops thru
      case CTX_INIT :
      case CTX_CMDLN_ENV :
      case CTX_CMDLN_PGM :
      case CTX_CMDLN_VALID :
            err_locn.src_file = NULL;
            break;
        }
        // drops thru
      case CTX_FORCED_INCS :
      case CTX_SOURCE :
        if( err_locn.src_file == NULL ) {
            if( SrcFilesOpen() ) {
                SrcFileGetTokenLocn( &err_locn );
            } else {
                err_locn.line = SrcLineCount;
                err_locn.column = 0;
                err_locn.src_file = SrcFileCurrent();
            }
        }
        break;
    }
}
Beispiel #2
0
void SymbolLocnDefine(          // DEFINE LOCATION SYMBOL
    TOKEN_LOCN *sym_locn,       // - symbol location (NULL for current source file)
    SYMBOL sym )                // - the symbol
{
    SYM_TOKEN_LOCN *locn = NULL;

    if( sym_locn != NULL && sym_locn->src_file != NULL ) {
        locn = SymbolLocnAlloc( &sym->locn );
        locn->tl = *sym_locn;
        sym->flag2 |= SF2_TOKEN_LOCN;
    } else {
        DbgVerify( sym_locn == NULL
                 , "SymbolLocnDefine -- bad location" );
        if( SrcFilesOpen() ) {
            locn = SymbolLocnAlloc( &sym->locn );
            SrcFileGetTokenLocn( &locn->tl );
            sym->flag2 |= SF2_TOKEN_LOCN;
        }
    }
}