//===-- Lower/Todo.h --------------------------------------------*- C++ -*-===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
//
// Coding style: https://mlir.llvm.org/getting_started/DeveloperGuide/
//
//===----------------------------------------------------------------------===//

#ifndef FORTRAN_LOWER_TODO_H
#define FORTRAN_LOWER_TODO_H

#include "flang/Optimizer/Support/FatalError.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/raw_ostream.h"
#include <cstdlib>

// This is throw-away code used to mark areas of the code that have not yet been
// developed.

#undef TODO
// Use TODO_NOLOC if no mlir location is available to indicate the line in
// Fortran source file that requires an unimplemented feature.
#undef TODO_NOLOC

#undef TODOQUOTE
#define TODOQUOTE(X) #X

#ifdef NDEBUG

// In a release build, just give a message and exit.
#define TODO_NOLOC(ToDoMsg)                                                    \
  do {                                                                         \
    llvm::errs() << __FILE__ << ':' << __LINE__ << ": not yet implemented "    \
                 << ToDoMsg << '\n';                                           \
    std::exit(1);                                                              \
  } while (false)

#undef TODO_DEFN
#define TODO_DEFN(MlirLoc, ToDoMsg, ToDoFile, ToDoLine)                        \
  do {                                                                         \
    mlir::emitError(MlirLoc, ToDoFile                                          \
                    ":" TODOQUOTE(ToDoLine) ": not yet implemented " ToDoMsg); \
    std::exit(1);                                                              \
  } while (false)

#define TODO(MlirLoc, ToDoMsg) TODO_DEFN(MlirLoc, ToDoMsg, __FILE__, __LINE__)

#else

// In a developer build, print a message and give a backtrace.
#undef TODO_NOLOCDEFN
#define TODO_NOLOCDEFN(ToDoMsg, ToDoFile, ToDoLine)                            \
  do {                                                                         \
    llvm::report_fatal_error(                                                  \
        __FILE__ ":" TODOQUOTE(__LINE__) ": not yet implemented " ToDoMsg);    \
  } while (false)

#define TODO_NOLOC(ToDoMsg) TODO_NOLOCDEFN(ToDoMsg, __FILE__, __LINE__)

#undef TODO_DEFN
#define TODO_DEFN(MlirLoc, ToDoMsg, ToDoFile, ToDoLine)                        \
  do {                                                                         \
    fir::emitFatalError(                                                       \
        MlirLoc,                                                               \
        ToDoFile ":" TODOQUOTE(ToDoLine) ": not yet implemented " ToDoMsg);    \
  } while (false)

#define TODO(MlirLoc, ToDoMsg) TODO_DEFN(MlirLoc, ToDoMsg, __FILE__, __LINE__)

#endif

#endif // FORTRAN_LOWER_TODO_H
