Home > Software design >  Watch window CS0103 - follow up to exclude my code as problem
Watch window CS0103 - follow up to exclude my code as problem

Time:12-10

Problem after updating VS2022 viewing the watches. After an answer with proposal to post the code, I do so to exclude the problem is caused by my code prior to reporting a bug.

The original question: enter image description here

All projects are 'out-of-the-box'

Library - StrangParser.cs

namespace html
{

    public enum Pin
    {
        Start,
        End,
        Both,
    }

    public class StringParser
    {

        private string  content     = "";
        public  string  Content     { get { return content; } set { if (content != value) content = value; if (content.Length > 0) { position = start = 0; end = 0; } } }

        private int     position    = -1;
        private int     start       = -1;
        private int     end         = -1;

        public bool Next()
        {

              position;
            if (position > content.Length)
                position = content.Length;

            if (position > end)
                end = position;

            return (position >= content.Length);

        }

        public bool Next(char to_char, bool include = true)
        {
            
            while (position < content.Length && content[position] != to_char)
            {
                  position;
                if (position > end)
                    end = position;
            }

            if (include)   position;

            if (position > content.Length)
                position = content.Length;

            if (position > end)
                end = position;

            return (position >= content.Length);

        }

        public bool Previous()
        {

            --position;
            if (position < 0)
                position = 0;

            if (position < start)
                start = position;

            return (position ==0);

        }

        public  string  Token
        {

            get 
            { 
                
                return start >= 0 && end <= content.Length && end > start 
                        ? content.Substring(start, end - start) 
                        : ""; 
            
            }
        
        }

        public void Pin(Pin pin)
        {

            if (pin == html.Pin.Start || pin == html.Pin.Both)
                start = position;

            if (pin == html.Pin.End || pin == html.Pin.Both)
                end = position;

        }

        public override string ToString()
        {

            if (content == null || content == "")
                return "";

            string s = content.Substring(0, start);
            string t = Token;
            string e = content.Substring(end, content.Length - end);

            if (s.Length > 15) s = "..."   s.Substring(s.Length - 15);
            if (e.Length > 15) e = e.Substring(0, 15)   "...";

            return string.Format("[{0}-{1}-{2}] {3} |--> '{4}' <--| {5}", start, position, end, s, t, e);

        }

    }

}

Form App - Form1.cs - code

using System.Windows.Forms;
using html;

namespace contentdownloader
{

    public partial class Form1 : Form
    {

        string          filecontent     = "<html><head></head><body></body></html>";

        StringParser    watch_parser    = null;
        string          watch_token     = null;

        public Form1()
        {

            InitializeComponent();


            StringParser    parser      = new StringParser();
            watch_parser = parser;

            parser.Content = filecontent;

            string token = "";
            while (!parser.Next('<'))
            {
                
                //parser.Pin(html.Pin.Both);
                parser.Next('>');
                token = watch_token = parser.Token;
                parser.Pin(html.Pin.Both);

            }

        }

    }

}


CodePudding user response:

You can change your code like this, define parser and token before the function InitializeComponent() of Form1:

public partial class Form1 : Form
{
    string filecontent = "<html><head></head><body></body></html>";
    StringParser parser = new StringParser();
    string token = "";
    public Form1()
    {

        InitializeComponent();
        parser.Content = filecontent;
        while (!parser.Next('<'))
        {
            parser.Next('>');
            token = parser.Token;
        }

    }
}

Here is my test result: enter image description here

CodePudding user response:

It's a regression in 17.4 V.S.
WinForms repo issue: https://github.com/dotnet/winforms/issues/8354

  • Related