@@ -1467,12 +1467,13 @@ class __SYCL_EXPORT handler {
14671467      setNDRangeDescriptor (std::move (params)...);
14681468    }
14691469
1470-     setDeviceKernelInfo ( std::move (Kernel) );
1471-     if  (lambdaAndKernelHaveEqualName<NameT>()) {
1472-       StoreLambda<NameT, KernelType, Dims, ElementType>( std::move (KernelFunc)); 
1473-     }  else  { 
1474-       extractArgsAndReqs ( );
1470+     MKernel =  detail::getSyclObjImpl (Kernel);
1471+     if  (! lambdaAndKernelHaveEqualName<NameT>()) {
1472+       throw   sycl::exception ( 
1473+            make_error_code (errc::invalid), 
1474+            " the kernel name must match the name of the lambda "  );
14751475    }
1476+     StoreLambda<NameT, KernelType, Dims, ElementType>(std::move (KernelFunc));
14761477    processProperties<Info.IsESIMD , PropertiesT>(Props);
14771478#endif 
14781479  }
@@ -1926,12 +1927,15 @@ class __SYCL_EXPORT handler {
19261927    //  No need to check if range is out of INT_MAX limits as it's compile-time
19271928    //  known constant
19281929    setNDRangeDescriptor (range<1 >{1 });
1929-     setDeviceKernelInfo (std::move (Kernel));
1930-     if  (lambdaAndKernelHaveEqualName<NameT>()) {
1931-       StoreLambda<NameT, KernelType, /* Dims*/   1 , void >(std::move (KernelFunc));
1932-     } else  {
1933-       extractArgsAndReqs ();
1930+ 
1931+     MKernel = detail::getSyclObjImpl (std::move (Kernel));
1932+     if  (!lambdaAndKernelHaveEqualName<NameT>()) {
1933+       throw  sycl::exception (
1934+           make_error_code (errc::invalid),
1935+           " the kernel name must match the name of the lambda"  );
19341936    }
1937+     StoreLambda<NameT, KernelType, /* Dims*/   1 , void >(std::move (KernelFunc));
1938+ 
19351939#else 
19361940    detail::CheckDeviceCopyable<KernelType>();
19371941#endif 
0 commit comments