brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.5 KiB · d575f36 Raw
40 lines · cpp
1#include "flang/Evaluate/expression.h"2#include "flang/Evaluate/fold.h"3#include "flang/Evaluate/intrinsics.h"4#include "flang/Evaluate/target.h"5#include "flang/Evaluate/tools.h"6#include "flang/Parser/message.h"7#include "flang/Testing/testing.h"8#include <cstdio>9#include <cstdlib>10#include <string>11 12using namespace Fortran::evaluate;13 14int main() {15  using DefaultIntegerExpr = Expr<Type<TypeCategory::Integer, 4>>;16  TEST(DefaultIntegerExpr::Result::AsFortran() == "INTEGER(4)");17  MATCH("666_4", DefaultIntegerExpr{666}.AsFortran());18  MATCH("-1_4", (-DefaultIntegerExpr{1}).AsFortran());19  auto ex1{20      DefaultIntegerExpr{2} + DefaultIntegerExpr{3} * -DefaultIntegerExpr{4}};21  MATCH("2_4+3_4*(-4_4)", ex1.AsFortran());22  Fortran::common::IntrinsicTypeDefaultKinds defaults;23  auto intrinsics{Fortran::evaluate::IntrinsicProcTable::Configure(defaults)};24  TargetCharacteristics targetCharacteristics;25  Fortran::common::LanguageFeatureControl languageFeatures;26  std::set<std::string> tempNames;27  FoldingContext context{Fortran::parser::ContextualMessages{nullptr}, defaults,28      intrinsics, targetCharacteristics, languageFeatures, tempNames};29  ex1 = Fold(context, std::move(ex1));30  MATCH("-10_4", ex1.AsFortran());31  MATCH("1_4/2_4", (DefaultIntegerExpr{1} / DefaultIntegerExpr{2}).AsFortran());32  DefaultIntegerExpr a{1};33  DefaultIntegerExpr b{2};34  MATCH("1_4", a.AsFortran());35  a = b;36  MATCH("2_4", a.AsFortran());37  MATCH("2_4", b.AsFortran());38  return testing::Complete();39}40