[Scummvm-git-logs] scummvm master -> 4d17c4dde7d0669cee768d4b4f24c63a8eab26c0

djsrv dservilla at gmail.com
Mon Aug 3 19:54:42 UTC 2020


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
4d17c4dde7 DIRECTOR: LINGO: Fix put into cast


Commit: 4d17c4dde7d0669cee768d4b4f24c63a8eab26c0
    https://github.com/scummvm/scummvm/commit/4d17c4dde7d0669cee768d4b4f24c63a8eab26c0
Author: djsrv (dservilla at gmail.com)
Date: 2020-08-03T15:54:12-04:00

Commit Message:
DIRECTOR: LINGO: Fix put into cast

Changed paths:
    engines/director/lingo/lingo-gr.cpp
    engines/director/lingo/lingo-gr.y
    engines/director/lingo/lingo.cpp
    engines/director/lingo/tests/reference.lingo


diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index 893367e908..becf14c054 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -771,7 +771,7 @@ static const yytype_int16 yyrline[] =
      608,   609,   610,   611,   617,   617,   622,   625,   634,   635,
      637,   638,   639,   640,   641,   642,   643,   644,   645,   646,
      647,   648,   649,   650,   651,   652,   653,   654,   656,   659,
-     660,   661,   662,   663,   664,   665,   666,   668,   669,   672,
+     662,   663,   664,   665,   666,   667,   668,   669,   671,   672,
      675,   679,   680,   681,   682,   690,   691,   691,   692,   692,
      693,   693,   694,   697,   700,   706,   706,   711,   714,   718,
      719,   722,   726,   727,   730,   734,   735,   738,   749,   750,
@@ -913,11 +913,11 @@ static const yytype_uint8 yydefact[] =
       50,   178,    62,   124,   139,    67,    75,     0,    68,     0,
        0,    70,    69,    79,     8,     9,    10,    11,     0,   149,
        0,   150,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   185,    87,    88,    90,   151,   117,    74,   153,    82,
+       0,   185,    87,    88,    90,   151,   118,    74,   153,    82,
        0,    46,     0,   121,     0,    62,     0,     0,     0,     0,
        0,     0,   163,   133,   156,   158,   145,     0,   142,     0,
        1,     0,   178,   179,   138,    58,   171,   160,   171,   140,
-     127,    76,     0,    77,   118,   108,   119,   120,   155,     0,
+     127,    76,     0,    77,   109,   108,   119,   120,   155,     0,
       73,     0,     0,     0,     0,     0,    71,    72,     0,    70,
       69,   186,    87,   189,     0,   188,   187,   191,   178,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
@@ -932,13 +932,13 @@ static const yytype_uint8 yydefact[] =
       94,   171,     0,    12,    13,    15,    16,    17,    18,     0,
        0,    58,    22,    20,     0,     0,     0,    27,    28,    21,
       19,    47,   132,   145,     0,     0,   142,   134,   135,   137,
-     180,     0,   171,   177,   177,   141,   109,     0,   111,     0,
-     113,     0,   115,     0,    80,    81,   194,   193,   195,   190,
+     180,     0,   171,   177,   177,   141,   110,     0,   112,     0,
+     114,     0,   116,     0,    80,    81,   194,   193,   195,   190,
        0,     0,     0,   192,    83,    84,    86,     0,     0,    42,
       34,    51,    23,    98,     0,   147,    62,    66,    62,    63,
      144,     0,    59,   173,     0,     0,     0,     0,     0,     0,
        0,   177,    14,    62,    60,    60,     0,     0,    49,     0,
-       0,   181,     0,    55,   167,   165,   110,   112,   114,   116,
+       0,   181,     0,    55,   167,   165,   111,   113,   115,   117,
        0,     0,    43,    35,    39,    59,     0,     0,    48,    64,
      182,   136,    62,   174,    85,   162,    58,     0,     0,     0,
       25,    26,   183,     0,     0,    56,     0,   175,   166,    44,
@@ -979,7 +979,7 @@ static const yytype_int16 yytable[] =
 {
       29,   191,    32,   107,   291,    95,   305,   330,   100,   349,
      138,   373,   239,   302,    40,   208,   145,    43,    90,    91,
-      92,    81,     2,   383,   145,   -24,   145,   146,   387,     5,
+      92,    81,     2,   383,   145,   -24,   145,   146,   387,    54,
       55,     7,     8,   240,   138,   108,   112,   352,   152,   153,
      154,   155,    84,    85,   109,   151,   152,   153,   154,   155,
      154,   155,   -24,   331,   172,   385,   324,   325,   156,   164,
@@ -1421,7 +1421,7 @@ static const yytype_uint8 yyr1[] =
      131,   131,   131,   131,   132,   131,   131,   131,   133,   133,
      134,   134,   134,   134,   134,   134,   134,   134,   134,   134,
      134,   134,   134,   134,   134,   134,   134,   134,   135,   135,
-     135,   135,   135,   135,   135,   135,   135,   136,   136,   136,
+     135,   135,   135,   135,   135,   135,   135,   135,   136,   136,
      136,   137,   137,   137,   137,   137,   138,   137,   139,   137,
      140,   137,   137,   137,   137,   141,   137,   137,   137,   142,
      142,   142,   143,   143,   143,   144,   144,   144,   145,   145,
@@ -1445,8 +1445,8 @@ static const yytype_int8 yyr2[] =
        1,     2,     2,     2,     1,     1,     2,     2,     3,     1,
        4,     4,     1,     4,     0,     7,     4,     1,     1,     3,
        1,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-       3,     3,     3,     3,     3,     3,     3,     3,     2,     4,
-       6,     4,     6,     4,     6,     4,     6,     1,     2,     2,
+       3,     3,     3,     3,     3,     3,     3,     3,     2,     2,
+       4,     6,     4,     6,     4,     6,     4,     6,     1,     2,
        2,     2,     1,     1,     2,     1,     0,     3,     0,     3,
        0,     3,     4,     2,     4,     0,     7,     4,     2,     0,
        1,     3,     0,     1,     3,     0,     1,     3,     1,     2,
@@ -2843,59 +2843,59 @@ yyreduce:
 #line 2844 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 109: /* chunkexpr: tCHAR expr tOF simpleexpr  */
+  case 109: /* chunkexpr: tCAST simpleexprnoparens  */
 #line 659 "engines/director/lingo/lingo-gr.y"
+                                                {
+		Common::String cast("cast");
+		g_lingo->codeFunc(&cast, 1); }
+#line 2852 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 110: /* chunkexpr: tCHAR expr tOF simpleexpr  */
+#line 662 "engines/director/lingo/lingo-gr.y"
                                                                 { g_lingo->code1(LC::c_charOf); }
-#line 2850 "engines/director/lingo/lingo-gr.cpp"
+#line 2858 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 110: /* chunkexpr: tCHAR expr tTO expr tOF simpleexpr  */
-#line 660 "engines/director/lingo/lingo-gr.y"
+  case 111: /* chunkexpr: tCHAR expr tTO expr tOF simpleexpr  */
+#line 663 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_charToOf); }
-#line 2856 "engines/director/lingo/lingo-gr.cpp"
+#line 2864 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 111: /* chunkexpr: tITEM expr tOF simpleexpr  */
-#line 661 "engines/director/lingo/lingo-gr.y"
+  case 112: /* chunkexpr: tITEM expr tOF simpleexpr  */
+#line 664 "engines/director/lingo/lingo-gr.y"
                                                                 { g_lingo->code1(LC::c_itemOf); }
-#line 2862 "engines/director/lingo/lingo-gr.cpp"
+#line 2870 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 112: /* chunkexpr: tITEM expr tTO expr tOF simpleexpr  */
-#line 662 "engines/director/lingo/lingo-gr.y"
+  case 113: /* chunkexpr: tITEM expr tTO expr tOF simpleexpr  */
+#line 665 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_itemToOf); }
-#line 2868 "engines/director/lingo/lingo-gr.cpp"
+#line 2876 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 113: /* chunkexpr: tLINE expr tOF simpleexpr  */
-#line 663 "engines/director/lingo/lingo-gr.y"
+  case 114: /* chunkexpr: tLINE expr tOF simpleexpr  */
+#line 666 "engines/director/lingo/lingo-gr.y"
                                                                 { g_lingo->code1(LC::c_lineOf); }
-#line 2874 "engines/director/lingo/lingo-gr.cpp"
+#line 2882 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 114: /* chunkexpr: tLINE expr tTO expr tOF simpleexpr  */
-#line 664 "engines/director/lingo/lingo-gr.y"
+  case 115: /* chunkexpr: tLINE expr tTO expr tOF simpleexpr  */
+#line 667 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lineToOf); }
-#line 2880 "engines/director/lingo/lingo-gr.cpp"
+#line 2888 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 115: /* chunkexpr: tWORD expr tOF simpleexpr  */
-#line 665 "engines/director/lingo/lingo-gr.y"
+  case 116: /* chunkexpr: tWORD expr tOF simpleexpr  */
+#line 668 "engines/director/lingo/lingo-gr.y"
                                                                 { g_lingo->code1(LC::c_wordOf); }
-#line 2886 "engines/director/lingo/lingo-gr.cpp"
+#line 2894 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 116: /* chunkexpr: tWORD expr tTO expr tOF simpleexpr  */
-#line 666 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_wordToOf); }
-#line 2892 "engines/director/lingo/lingo-gr.cpp"
-    break;
-
-  case 118: /* reference: tCAST simpleexprnoparens  */
+  case 117: /* chunkexpr: tWORD expr tTO expr tOF simpleexpr  */
 #line 669 "engines/director/lingo/lingo-gr.y"
-                                                {
-		Common::String cast("cast");
-		g_lingo->codeFunc(&cast, 1); }
+                                                { g_lingo->code1(LC::c_wordToOf); }
 #line 2900 "engines/director/lingo/lingo-gr.cpp"
     break;
 
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index af183b9a56..217da6bd77 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -656,6 +656,9 @@ expr: simpleexpr { $$ = $simpleexpr; }
 chunkexpr:  tFIELD simpleexprnoparens	{
 		Common::String field("field");
 		g_lingo->codeFunc(&field, 1); }
+	| tCAST simpleexprnoparens		{
+		Common::String cast("cast");
+		g_lingo->codeFunc(&cast, 1); }
 	| tCHAR expr tOF simpleexpr				{ g_lingo->code1(LC::c_charOf); }
 	| tCHAR expr tTO expr tOF simpleexpr	{ g_lingo->code1(LC::c_charToOf); }
 	| tITEM expr tOF simpleexpr				{ g_lingo->code1(LC::c_itemOf); }
@@ -666,9 +669,6 @@ chunkexpr:  tFIELD simpleexprnoparens	{
 	| tWORD expr tTO expr tOF simpleexpr	{ g_lingo->code1(LC::c_wordToOf); }
 
 reference: 	chunkexpr
-	| tCAST simpleexprnoparens		{
-		Common::String cast("cast");
-		g_lingo->codeFunc(&cast, 1); }
 	| tSCRIPT simpleexprnoparens	{
 		Common::String script("script");
 		g_lingo->codeFunc(&script, 1); }
diff --git a/engines/director/lingo/lingo.cpp b/engines/director/lingo/lingo.cpp
index 0022e9274f..9191801676 100644
--- a/engines/director/lingo/lingo.cpp
+++ b/engines/director/lingo/lingo.cpp
@@ -1264,7 +1264,7 @@ void Lingo::varAssign(Datum &var, Datum &value, bool global, DatumHash *localvar
 		}
 
 		warning("varAssign: variable %s not defined", name.c_str());
-	} else if (var.type == FIELDREF) {
+	} else if (var.type == FIELDREF || var.type == CASTREF) {
 		Movie *movie = g_director->getCurrentMovie();
 		if (!movie) {
 			warning("varAssign: Assigning to a reference to an empty movie");
diff --git a/engines/director/lingo/tests/reference.lingo b/engines/director/lingo/tests/reference.lingo
index 53f5d71ac3..21f1e85638 100644
--- a/engines/director/lingo/tests/reference.lingo
+++ b/engines/director/lingo/tests/reference.lingo
@@ -8,6 +8,7 @@ set a = window "windowname"
 
 -- assign to field reference
 put "asdf" into field 1
+put "lorem ipsum" into cast 1
 
 -- the property of reference
 put the text of cast "castname"




More information about the Scummvm-git-logs mailing list