diff --git a/compiler2/Value.cc b/compiler2/Value.cc
index e0d0a4068141064731ee21be10e0a90ce4525e16..355c5a9c2a1acc48b1aa0b31cf97ac5e05b0d69f 100644
--- a/compiler2/Value.cc
+++ b/compiler2/Value.cc
@@ -5144,7 +5144,8 @@ namespace Common {
             // convert the parameter list to component 'create' parameters
             size_t nof_pars = u.expr.t_list2->get_nof_tis();
             if (nof_pars > 2) {
-              // error
+              u.expr.t_list2->error("Operation `create' for a component type cannot have more than 2 parameters");
+              goto error;
             }
             else {
               Value* name_val = NULL;
@@ -5157,7 +5158,9 @@ namespace Common {
                     name_val = name_par->get_Template()->get_Value();
                   }
                   else {
-                    // error
+                    name_par->error("A specific value without matching symbols was expected for the "
+                      "first parameter of operation `create'");
+                    goto error;
                   }
                 }
                 if (nof_pars == 2) {
@@ -5168,7 +5171,12 @@ namespace Common {
                       loc_val = loc_par->get_Template()->get_Value();
                     }
                     else {
-                      // error
+                      loc_par->error("A specific value without matching symbols was expected for the "
+                        "second parameter of operation `create'");
+                      if (name_val != NULL) {
+                        delete name_val;
+                      }
+                      goto error;
                     }
                   }
                 }
@@ -5181,7 +5189,8 @@ namespace Common {
           }
           else { // T_CLASS
             if (u.expr.b4) { // 'alive' keyword is set
-              // error
+              error("Keyword `alive' cannot be used when creating an object of class type");
+              goto error;
             }
             u.expr.v_optype = OPTYPE_CLASS_CREATE;
           }
diff --git a/function_test/Semantic_Analyser/oop/oop_SE.ttcn b/function_test/Semantic_Analyser/oop/oop_SE.ttcn
index 02872e813e5366e06481b60de24699fa607b03e6..21c0007bcd809b5b276b1e91911cac129f8838bf 100644
--- a/function_test/Semantic_Analyser/oop/oop_SE.ttcn
+++ b/function_test/Semantic_Analyser/oop/oop_SE.ttcn
@@ -338,6 +338,13 @@ type class C20 extends C15 { //^In type definition//
   create() : f_embedded_types() { } //^In constructor definition// //^In super-constructor call// //Reference to constructor was expected instead of function//
 }
 
+function f_create() { //^In function definition//
+  var C0 x1 := C0.create alive; //^In variable definition// //Keyword `alive' cannot be used when creating an object of class type//
+  var Comp c1 := Comp.create("a", "b", "c"); //^In variable definition// //Operation `create' for a component type cannot have more than 2 parameters//
+  var Comp c2 := Comp.create(? length (3)); //^In variable definition// //A specific value without matching symbols was expected for the first parameter of operation `create'//
+  var Comp c3 := Comp.create("a", *); //^In variable definition// //A specific value without matching symbols was expected for the second parameter of operation `create'//
+}
+
 
 type class @final @abstract C21 { } //^In type definition// //Final classes cannot be abstract//