/*
 *  Created on: Dec 16, 2016
 *      Author: pgess
 */

#include "passmanager.h"

#include "gtest/gtest.h"

using namespace xreate;

TEST(Effects, syntax_recognizeIdentifiers){
    PassManager* man = PassManager::prepareForCode(R"Code(
            test= function(a:: num):: num; entry {
                a = b:: int.
                b = 8:: int.

                a
            }
    )Code");
}

TEST(Effects, syntax_operatorIndex){
    PassManager* man = PassManager::prepareForCode(R"Code(
            test= function(a:: num):: num; entry {
                b = a[1].
                b
            }
    )Code");
}

TEST(Effects, syntax_versions_1){
    PassManager* man = PassManager::prepareForCode(R"Code(
            test= function(a:: num):: num; entry {
                x= b[8].
                b = 5:: num.
                x{1} = a:: num.

                x{1} + a
            }
    )Code");
}

TEST(Effects, analysis_versions_1){
    PassManager* man = PassManager::prepareForCode(R"Code(
            test= function(a:: num):: num; entry {
                x= b[8].
                b = 5.
                x{1} = a.

                x{1} + a
            }
    )Code");


    VersionsPass* pass = new VersionsPass();
    pass->run();
    pass->finish();
}

TEST(Effects, analysis_versions_copy){

}

TEST(Effects, syntax_references1){

}

TEST(Effects, syntax_scope_versions1){

}

TEST(Effects, DynamicVersions_analysis){

}