module checkExternalFunctionInvocationFollowedByLogStatement {
	external function fx_example1();
	external function fx_example2(integer p_int) return integer;
	external function fx_example2(charstring p_cs) return charstring;
	
	//inconclusive - in a constant definition
	const integer c := fx_example1(1);

	//inconclusive - unresolved 
	function f_example1() {
		fx_example0();
	}
	
	//bad - at the end of a scope 
	function f_example1() {
		fx_example1();
	}

	//bad - followed
	function f_example2() {
		fx_example1();
		log("External Function fx_example1 called!")
	}

	//bad - at the end of a scope without SemiColon
	function f_example3() {
		fx_example1()
	}

	//bad - at the end of a scope without SemiColon, followed
	function f_example4() {
		fx_example1()
		log("External Function fx_example1 called!")
	}

	//multiple
	testcase tc1() runs on mtcType system systemType {
		//bad
		fx_example1();
		log("External Function fx_example1 called!")
		f_example1();

		//good
		log("External Function fx_example1 called!")
		fx_example1();

		f_example2() 
		
		//bad	
		fx_example1()

		//bad
		fx_example1();
		log("External Function fx_example1 called!")
	}
	
	control {
		execute(tc1());
	}

}